diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 0c3883cc77..abb8166951 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from compositepk.person where "one" = ${ParameterValue(compositeId.one, null, ToStatement.longToStatement)} AND "two" = ${ParameterValue(compositeId.two, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into compositepk.person("one", "two", "name") @@ -75,7 +75,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "one", "two", "name" @@ -115,7 +115,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index 79b6bada7b..1bb2ccecea 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(compositeId).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -79,7 +79,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(compositeId) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 41f8166f71..4a71c4b50a 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -27,7 +27,7 @@ class FootballClubRepoImpl extends FootballClubRepo { SQL"""delete from myschema.football_club where "id" = ${ParameterValue(id, null, FootballClubId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { SQL"""insert into myschema.football_club("id", "name") @@ -41,7 +41,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text, c) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { SQL"""select "id", "name" @@ -87,7 +87,7 @@ class FootballClubRepoImpl extends FootballClubRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index cd0197fbac..ac0b968b9d 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -25,7 +25,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo map.remove(id).isDefined } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo unsaved.size.toLong } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { map.values.toList @@ -69,7 +69,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 2e2ad6d7fa..c817a06275 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { SQL"""delete from myschema.marital_status where "id" = ${ParameterValue(id, null, MaritalStatusId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") @@ -40,7 +40,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text, c) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { SQL"""select "id" @@ -78,7 +78,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index cebf730e2f..61853b7662 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M map.remove(id).isDefined } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M unsaved.size.toLong } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { map.values.toList @@ -59,7 +59,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.toList } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { map.put(unsaved.id, unsaved): @nowarn diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index f7e06e7580..e9ca0cb802 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from myschema.person where "id" = ${ParameterValue(id, null, PersonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -94,7 +94,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" @@ -160,7 +160,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index a5e38ceb36..ebb343ed03 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(id).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.id)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -91,7 +91,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 0c3883cc77..abb8166951 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from compositepk.person where "one" = ${ParameterValue(compositeId.one, null, ToStatement.longToStatement)} AND "two" = ${ParameterValue(compositeId.two, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into compositepk.person("one", "two", "name") @@ -75,7 +75,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "one", "two", "name" @@ -115,7 +115,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index 79b6bada7b..1bb2ccecea 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(compositeId).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -79,7 +79,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(compositeId) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 41f8166f71..4a71c4b50a 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -27,7 +27,7 @@ class FootballClubRepoImpl extends FootballClubRepo { SQL"""delete from myschema.football_club where "id" = ${ParameterValue(id, null, FootballClubId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { SQL"""insert into myschema.football_club("id", "name") @@ -41,7 +41,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text, c) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { SQL"""select "id", "name" @@ -87,7 +87,7 @@ class FootballClubRepoImpl extends FootballClubRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index cd0197fbac..ac0b968b9d 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -25,7 +25,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo map.remove(id).isDefined } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo unsaved.size.toLong } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { map.values.toList @@ -69,7 +69,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 2e2ad6d7fa..c817a06275 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { SQL"""delete from myschema.marital_status where "id" = ${ParameterValue(id, null, MaritalStatusId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") @@ -40,7 +40,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text, c) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { SQL"""select "id" @@ -78,7 +78,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index cebf730e2f..61853b7662 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M map.remove(id).isDefined } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M unsaved.size.toLong } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { map.values.toList @@ -59,7 +59,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.toList } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { map.put(unsaved.id, unsaved): @nowarn diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index f7e06e7580..e9ca0cb802 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from myschema.person where "id" = ${ParameterValue(id, null, PersonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -94,7 +94,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" @@ -160,7 +160,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index a5e38ceb36..ebb343ed03 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(id).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.id)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -91,7 +91,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 0c3883cc77..abb8166951 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from compositepk.person where "one" = ${ParameterValue(compositeId.one, null, ToStatement.longToStatement)} AND "two" = ${ParameterValue(compositeId.two, null, ToStatement.optionToStatement(ToStatement.stringToStatement, ParameterMetaData.StringParameterMetaData))}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into compositepk.person("one", "two", "name") @@ -75,7 +75,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "one", "two", "name" @@ -115,7 +115,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index 79b6bada7b..1bb2ccecea 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(compositeId).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -79,7 +79,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(compositeId) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 41f8166f71..4a71c4b50a 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -27,7 +27,7 @@ class FootballClubRepoImpl extends FootballClubRepo { SQL"""delete from myschema.football_club where "id" = ${ParameterValue(id, null, FootballClubId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { SQL"""insert into myschema.football_club("id", "name") @@ -41,7 +41,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text, c) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { SQL"""select "id", "name" @@ -87,7 +87,7 @@ class FootballClubRepoImpl extends FootballClubRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.rowParser) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.rowParser) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index cd0197fbac..ac0b968b9d 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -25,7 +25,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo map.remove(id).isDefined } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow)(implicit c: Connection): FootballClubRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo unsaved.size.toLong } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[FootballClubRow] = { map.values.toList @@ -69,7 +69,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 2e2ad6d7fa..c817a06275 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { SQL"""delete from myschema.marital_status where "id" = ${ParameterValue(id, null, MaritalStatusId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") @@ -40,7 +40,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text, c) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { SQL"""select "id" @@ -78,7 +78,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.rowParser) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.rowParser) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { SQL"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index cebf730e2f..61853b7662 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M map.remove(id).isDefined } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { val _ = if (map.contains(unsaved.id)) @@ -42,7 +42,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M unsaved.size.toLong } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[MaritalStatusRow] = { map.values.toList @@ -59,7 +59,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.toList } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow)(implicit c: Connection): MaritalStatusRow = { map.put(unsaved.id, unsaved): @nowarn diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index f7e06e7580..e9ca0cb802 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from myschema.person where "id" = ${ParameterValue(id, null, PersonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -94,7 +94,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" @@ -160,7 +160,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.rowParser) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { fieldValues match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index a5e38ceb36..ebb343ed03 100644 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(id).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.id)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -91,7 +91,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]])(implicit c: Connection): Boolean = { map.get(id) match { diff --git a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-anorm@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 251615a8a9..98dd2cb79b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -30,7 +30,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${fromWrite(compositeId.one)(Write.fromPut(Meta.LongMeta.put))} AND "two" = ${fromWrite(compositeId.two)(Write.fromPutOption(Meta.StringMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -73,7 +73,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.read) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.read).stream @@ -101,7 +101,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.read) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index dcd5ed07ab..769dda2ae0 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -95,7 +95,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 6cacdab0c5..de49098dff 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${fromWrite(id)(Write.fromPut(FootballClubId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { new FragmentOps(sql"""COPY myschema.football_club("id", "name") FROM STDIN""").copyIn(unsaved, batchSize)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.read) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.read).stream @@ -70,7 +70,7 @@ class FootballClubRepoImpl extends FootballClubRepo { .map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.read) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index be586bc0d9..273f37589c 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -27,7 +27,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { delay { @@ -50,7 +50,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { Stream.emits(map.values.toList) @@ -81,7 +81,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 62c559eb5d..7d77c565bc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${fromWrite(id)(Write.fromPut(MaritalStatusId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -37,7 +37,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { new FragmentOps(sql"""COPY myschema.marital_status("id") FROM STDIN""").copyIn(unsaved, batchSize)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.read).stream @@ -57,7 +57,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""select "id" from myschema.marital_status $where""".query(MaritalStatusRow.read).stream } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 6728309a2f..1c8e96824b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -27,7 +27,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { @@ -50,7 +50,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { Stream.emits(map.values.toList) @@ -69,7 +69,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index 8a9a630651..168f8cc1f9 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -34,7 +34,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${fromWrite(id)(Write.fromPut(PersonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -92,7 +92,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.read) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.read).stream @@ -142,7 +142,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.read) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index abb255c583..ec99e41029 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -107,7 +107,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 251615a8a9..98dd2cb79b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -30,7 +30,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${fromWrite(compositeId.one)(Write.fromPut(Meta.LongMeta.put))} AND "two" = ${fromWrite(compositeId.two)(Write.fromPutOption(Meta.StringMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -73,7 +73,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.read) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.read).stream @@ -101,7 +101,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.read) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index dcd5ed07ab..769dda2ae0 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -95,7 +95,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 6cacdab0c5..de49098dff 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${fromWrite(id)(Write.fromPut(FootballClubId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { new FragmentOps(sql"""COPY myschema.football_club("id", "name") FROM STDIN""").copyIn(unsaved, batchSize)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.read) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.read).stream @@ -70,7 +70,7 @@ class FootballClubRepoImpl extends FootballClubRepo { .map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.read) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index be586bc0d9..273f37589c 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -27,7 +27,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { delay { @@ -50,7 +50,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { Stream.emits(map.values.toList) @@ -81,7 +81,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 62c559eb5d..7d77c565bc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${fromWrite(id)(Write.fromPut(MaritalStatusId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -37,7 +37,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { new FragmentOps(sql"""COPY myschema.marital_status("id") FROM STDIN""").copyIn(unsaved, batchSize)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.read).stream @@ -57,7 +57,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""select "id" from myschema.marital_status $where""".query(MaritalStatusRow.read).stream } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 6728309a2f..1c8e96824b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -27,7 +27,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { @@ -50,7 +50,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { Stream.emits(map.values.toList) @@ -69,7 +69,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index 8a9a630651..168f8cc1f9 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -34,7 +34,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${fromWrite(id)(Write.fromPut(PersonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -92,7 +92,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.read) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.read).stream @@ -142,7 +142,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.read) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index abb255c583..ec99e41029 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -107,7 +107,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 251615a8a9..98dd2cb79b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -30,7 +30,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${fromWrite(compositeId.one)(Write.fromPut(Meta.LongMeta.put))} AND "two" = ${fromWrite(compositeId.two)(Write.fromPutOption(Meta.StringMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -73,7 +73,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.read) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.read).stream @@ -101,7 +101,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.read) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index dcd5ed07ab..769dda2ae0 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -95,7 +95,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index 6cacdab0c5..de49098dff 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${fromWrite(id)(Write.fromPut(FootballClubId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { new FragmentOps(sql"""COPY myschema.football_club("id", "name") FROM STDIN""").copyIn(unsaved, batchSize)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.read) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.read).stream @@ -70,7 +70,7 @@ class FootballClubRepoImpl extends FootballClubRepo { .map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.read) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.read) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index be586bc0d9..273f37589c 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -27,7 +27,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ConnectionIO[FootballClubRow] = { delay { @@ -50,7 +50,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, FootballClubRow] = { Stream.emits(map.values.toList) @@ -81,7 +81,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 62c559eb5d..7d77c565bc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -25,7 +25,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${fromWrite(id)(Write.fromPut(MaritalStatusId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -37,7 +37,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { new FragmentOps(sql"""COPY myschema.marital_status("id") FROM STDIN""").copyIn(unsaved, batchSize)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.read).stream @@ -57,7 +57,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""select "id" from myschema.marital_status $where""".query(MaritalStatusRow.read).stream } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.read) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.read) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 6728309a2f..1c8e96824b 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -27,7 +27,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { @@ -50,7 +50,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, MaritalStatusRow] = { Stream.emits(map.values.toList) @@ -69,7 +69,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ConnectionIO[MaritalStatusRow] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index 8a9a630651..168f8cc1f9 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -34,7 +34,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${fromWrite(id)(Write.fromPut(PersonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -92,7 +92,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.read) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.read).stream @@ -142,7 +142,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.read) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.read) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { NonEmptyList.fromList(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index abb255c583..ec99e41029 100644 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -107,7 +107,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ConnectionIO[Boolean] = { delay { diff --git a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-doobie@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 8c24679c43..9e48b6bff7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -70,7 +70,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.jdbcDecoder).selectStream @@ -99,7 +99,7 @@ class PersonRepoImpl extends PersonRepo { where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index ed9cd4e96d..c05c177927 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -94,7 +94,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index f2feeac79c..b8e68b2974 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.jdbcDecoder).selectStream @@ -71,7 +71,7 @@ class FootballClubRepoImpl extends FootballClubRepo { where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index 8c4c2f79a3..79f4466d18 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -29,7 +29,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { ZStream.fromIterable(map.values) @@ -82,7 +82,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 7b9efd304d..00c0427caa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${Segment.paramSegment(id)(MaritalStatusId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -38,7 +38,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.jdbcDecoder).selectStream @@ -62,7 +62,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 627b512a7b..600343a3de 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -29,7 +29,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { ZStream.fromIterable(map.values) @@ -70,7 +70,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index cfd752c18d..e2571adee6 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -89,7 +89,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.jdbcDecoder).selectStream @@ -140,7 +140,7 @@ class PersonRepoImpl extends PersonRepo { where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index 7f76c300a8..d0f7ca92ab 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -106,7 +106,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm212/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 8c24679c43..9e48b6bff7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -70,7 +70,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.jdbcDecoder).selectStream @@ -99,7 +99,7 @@ class PersonRepoImpl extends PersonRepo { where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index ed9cd4e96d..c05c177927 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -94,7 +94,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index f2feeac79c..b8e68b2974 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.jdbcDecoder).selectStream @@ -71,7 +71,7 @@ class FootballClubRepoImpl extends FootballClubRepo { where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index 8c4c2f79a3..79f4466d18 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -29,7 +29,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { ZStream.fromIterable(map.values) @@ -82,7 +82,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 7b9efd304d..00c0427caa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${Segment.paramSegment(id)(MaritalStatusId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -38,7 +38,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.jdbcDecoder).selectStream @@ -62,7 +62,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 627b512a7b..600343a3de 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -29,7 +29,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { ZStream.fromIterable(map.values) @@ -70,7 +70,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index cfd752c18d..e2571adee6 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -89,7 +89,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.jdbcDecoder).selectStream @@ -140,7 +140,7 @@ class PersonRepoImpl extends PersonRepo { where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index 7f76c300a8..d0f7ca92ab 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -106,7 +106,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm213/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala index 566037212d..04c66636aa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonFields.scala @@ -8,13 +8,35 @@ package hardcoded package compositepk package person +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val one: IdField[Long, Row] val two: IdField[Option[String], Row] val name: OptField[String, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) + override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) + override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.one, fields.two, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala index 8c24679c43..9e48b6bff7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoImpl.scala @@ -29,7 +29,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from compositepk.person where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("compositepk.person", PersonFields) + DeleteBuilder("compositepk.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into compositepk.person("one", "two", "name") @@ -70,7 +70,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY compositepk.person("name", "one", "two") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "one", "two", "name" from compositepk.person""".query(PersonRow.jdbcDecoder).selectStream @@ -99,7 +99,7 @@ class PersonRepoImpl extends PersonRepo { where "one" = ${Segment.paramSegment(compositeId.one)(Setter.longSetter)} AND "two" = ${Segment.paramSegment(compositeId.two)(Setter.optionParamSetter(Setter.stringSetter))}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("compositepk.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("compositepk.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala index ed9cd4e96d..c05c177927 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -94,7 +94,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(compositeId: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala deleted file mode 100644 index 19fe394b37..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/compositepk/person/PersonStructure.scala +++ /dev/null @@ -1,29 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package compositepk -package person - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val one = new IdField[Long, Row](prefix, "one", None, Some("int8"))(x => extract(x).one, (row, value) => merge(row, extract(row).copy(one = value))) - override val two = new IdField[Option[String], Row](prefix, "two", None, None)(x => extract(x).two, (row, value) => merge(row, extract(row).copy(two = value))) - override val name = new OptField[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](one, two, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala index f398781245..ade209b9d7 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubFields.scala @@ -9,11 +9,32 @@ package myschema package football_club import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait FootballClubFields[Row] { val id: IdField[FootballClubId, Row] val name: Field[/* max 100 chars */ String, Row] } -object FootballClubFields extends FootballClubStructure[FootballClubRow](None, identity, (_, x) => x) +object FootballClubFields { + val structure: Relation[FootballClubFields, FootballClubRow, FootballClubRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) + extends Relation[FootballClubFields, FootballClubRow, Row] { + + override val fields: FootballClubFields[Row] = new FootballClubFields[Row] { + override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala index f2feeac79c..b8e68b2974 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoImpl.scala @@ -28,7 +28,7 @@ class FootballClubRepoImpl extends FootballClubRepo { sql"""delete from myschema.football_club where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilder("myschema.football_club", FootballClubFields) + DeleteBuilder("myschema.football_club", FootballClubFields.structure) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { sql"""insert into myschema.football_club("id", "name") @@ -40,7 +40,7 @@ class FootballClubRepoImpl extends FootballClubRepo { streamingInsert(s"""COPY myschema.football_club("id", "name") FROM STDIN""", batchSize, unsaved)(FootballClubRow.text) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderSql("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + SelectBuilderSql("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { sql"""select "id", "name" from myschema.football_club""".query(FootballClubRow.jdbcDecoder).selectStream @@ -71,7 +71,7 @@ class FootballClubRepoImpl extends FootballClubRepo { where "id" = ${Segment.paramSegment(id)(FootballClubId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilder("myschema.football_club", FootballClubFields, FootballClubRow.jdbcDecoder) + UpdateBuilder("myschema.football_club", FootballClubFields.structure, FootballClubRow.jdbcDecoder) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala index 8c4c2f79a3..79f4466d18 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubRepoMock.scala @@ -29,7 +29,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[FootballClubFields, FootballClubRow] = { - DeleteBuilderMock(DeleteParams.empty, FootballClubFields, map) + DeleteBuilderMock(DeleteParams.empty, FootballClubFields.structure.fields, map) } override def insert(unsaved: FootballClubRow): ZIO[ZConnection, Throwable, FootballClubRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[FootballClubFields, FootballClubRow] = { - SelectBuilderMock(FootballClubFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(FootballClubFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, FootballClubRow] = { ZStream.fromIterable(map.values) @@ -82,7 +82,7 @@ class FootballClubRepoMock(map: scala.collection.mutable.Map[FootballClubId, Foo } } override def update: UpdateBuilder[FootballClubFields, FootballClubRow] = { - UpdateBuilderMock(UpdateParams.empty, FootballClubFields, map) + UpdateBuilderMock(UpdateParams.empty, FootballClubFields.structure.fields, map) } override def updateFieldValues(id: FootballClubId, fieldValues: List[FootballClubFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala deleted file mode 100644 index 0a1540fc26..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/football_club/FootballClubStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package football_club - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class FootballClubStructure[Row](val prefix: Option[String], val extract: Row => FootballClubRow, val merge: (Row, FootballClubRow) => Row) - extends Relation[FootballClubFields, FootballClubRow, Row] - with FootballClubFields[Row] { outer => - - override val id = new IdField[FootballClubId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => FootballClubRow, merge: (NewRow, FootballClubRow) => NewRow): FootballClubStructure[NewRow] = - new FootballClubStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala index 614cb66ff6..55d719721e 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusFields.scala @@ -8,10 +8,30 @@ package hardcoded package myschema package marital_status +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait MaritalStatusFields[Row] { val id: IdField[MaritalStatusId, Row] } -object MaritalStatusFields extends MaritalStatusStructure[MaritalStatusRow](None, identity, (_, x) => x) +object MaritalStatusFields { + val structure: Relation[MaritalStatusFields, MaritalStatusRow, MaritalStatusRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) + extends Relation[MaritalStatusFields, MaritalStatusRow, Row] { + + override val fields: MaritalStatusFields[Row] = new MaritalStatusFields[Row] { + override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala index 7b9efd304d..00c0427caa 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoImpl.scala @@ -26,7 +26,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { sql"""delete from myschema.marital_status where "id" = ${Segment.paramSegment(id)(MaritalStatusId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilder("myschema.marital_status", MaritalStatusFields) + DeleteBuilder("myschema.marital_status", MaritalStatusFields.structure) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { sql"""insert into myschema.marital_status("id") @@ -38,7 +38,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { streamingInsert(s"""COPY myschema.marital_status("id") FROM STDIN""", batchSize, unsaved)(MaritalStatusRow.text) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderSql("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + SelectBuilderSql("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { sql"""select "id" from myschema.marital_status""".query(MaritalStatusRow.jdbcDecoder).selectStream @@ -62,7 +62,7 @@ class MaritalStatusRepoImpl extends MaritalStatusRepo { } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilder("myschema.marital_status", MaritalStatusFields, MaritalStatusRow.jdbcDecoder) + UpdateBuilder("myschema.marital_status", MaritalStatusFields.structure, MaritalStatusRow.jdbcDecoder) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { sql"""insert into myschema.marital_status("id") diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala index 627b512a7b..600343a3de 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusRepoMock.scala @@ -29,7 +29,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[MaritalStatusFields, MaritalStatusRow] = { - DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields, map) + DeleteBuilderMock(DeleteParams.empty, MaritalStatusFields.structure.fields, map) } override def insert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, MaritalStatusRow] = { ZIO.succeed { @@ -51,7 +51,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[MaritalStatusFields, MaritalStatusRow] = { - SelectBuilderMock(MaritalStatusFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(MaritalStatusFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, MaritalStatusRow] = { ZStream.fromIterable(map.values) @@ -70,7 +70,7 @@ class MaritalStatusRepoMock(map: scala.collection.mutable.Map[MaritalStatusId, M } } override def update: UpdateBuilder[MaritalStatusFields, MaritalStatusRow] = { - UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields, map) + UpdateBuilderMock(UpdateParams.empty, MaritalStatusFields.structure.fields, map) } override def upsert(unsaved: MaritalStatusRow): ZIO[ZConnection, Throwable, UpdateResult[MaritalStatusRow]] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala deleted file mode 100644 index eeca5f848e..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/marital_status/MaritalStatusStructure.scala +++ /dev/null @@ -1,26 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package marital_status - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class MaritalStatusStructure[Row](val prefix: Option[String], val extract: Row => MaritalStatusRow, val merge: (Row, MaritalStatusRow) => Row) - extends Relation[MaritalStatusFields, MaritalStatusRow, Row] - with MaritalStatusFields[Row] { outer => - - override val id = new IdField[MaritalStatusId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => MaritalStatusRow, merge: (NewRow, MaritalStatusRow) => NewRow): MaritalStatusStructure[NewRow] = - new MaritalStatusStructure(prefix, extract, merge) -} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala index 29b9ae44ab..9456f4b8dc 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonFields.scala @@ -13,8 +13,10 @@ import testdb.hardcoded.myschema.Sector import testdb.hardcoded.myschema.football_club.FootballClubId import testdb.hardcoded.myschema.marital_status.MaritalStatusId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val id: IdField[PersonId, Row] @@ -30,5 +32,34 @@ trait PersonFields[Row] { val sector: Field[Sector, Row] val favoriteNumber: Field[Number, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) + override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) + override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) + override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) + override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) + override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) + override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) + override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) + override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.favouriteFootballClubId, fields.name, fields.nickName, fields.blogUrl, fields.email, fields.phone, fields.likesPizza, fields.maritalStatusId, fields.workEmail, fields.sector, fields.favoriteNumber) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala index cfd752c18d..e2571adee6 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from myschema.person where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("myschema.person", PersonFields) + DeleteBuilder("myschema.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into myschema.person("id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number") @@ -89,7 +89,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY myschema.person("favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "work_email", "id", "marital_status_id", "sector", "favorite_number") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("myschema.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "id", "favourite_football_club_id", "name", "nick_name", "blog_url", "email", "phone", "likes_pizza", "marital_status_id", "work_email", "sector", "favorite_number" from myschema.person""".query(PersonRow.jdbcDecoder).selectStream @@ -140,7 +140,7 @@ class PersonRepoImpl extends PersonRepo { where "id" = ${Segment.paramSegment(id)(PersonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("myschema.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("myschema.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { NonEmptyChunk.fromIterableOption(fieldValues) match { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala index 7f76c300a8..d0f7ca92ab 100644 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala +++ b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(id).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -106,7 +106,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def updateFieldValues(id: PersonId, fieldValues: List[PersonFieldValue[?]]): ZIO[ZConnection, Throwable, Boolean] = { ZIO.succeed { diff --git a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala b/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala deleted file mode 100644 index 1886c54182..0000000000 --- a/.bleep/generated-sources/typo-tester-zio-jdbc@jvm3/scripts.GenHardcodedFiles/testdb/hardcoded/myschema/person/PersonStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File automatically generated by `typo` for its own test suite. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN - */ -package testdb -package hardcoded -package myschema -package person - -import testdb.hardcoded.myschema.Number -import testdb.hardcoded.myschema.Sector -import testdb.hardcoded.myschema.football_club.FootballClubId -import testdb.hardcoded.myschema.marital_status.MaritalStatusId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val id = new IdField[PersonId, Row](prefix, "id", None, Some("int8"))(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val favouriteFootballClubId = new Field[FootballClubId, Row](prefix, "favourite_football_club_id", None, None)(x => extract(x).favouriteFootballClubId, (row, value) => merge(row, extract(row).copy(favouriteFootballClubId = value))) - override val name = new Field[/* max 100 chars */ String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val nickName = new OptField[/* max 30 chars */ String, Row](prefix, "nick_name", None, None)(x => extract(x).nickName, (row, value) => merge(row, extract(row).copy(nickName = value))) - override val blogUrl = new OptField[/* max 100 chars */ String, Row](prefix, "blog_url", None, None)(x => extract(x).blogUrl, (row, value) => merge(row, extract(row).copy(blogUrl = value))) - override val email = new Field[/* max 254 chars */ String, Row](prefix, "email", None, None)(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val phone = new Field[/* max 8 chars */ String, Row](prefix, "phone", None, None)(x => extract(x).phone, (row, value) => merge(row, extract(row).copy(phone = value))) - override val likesPizza = new Field[Boolean, Row](prefix, "likes_pizza", None, None)(x => extract(x).likesPizza, (row, value) => merge(row, extract(row).copy(likesPizza = value))) - override val maritalStatusId = new Field[MaritalStatusId, Row](prefix, "marital_status_id", None, None)(x => extract(x).maritalStatusId, (row, value) => merge(row, extract(row).copy(maritalStatusId = value))) - override val workEmail = new OptField[/* max 254 chars */ String, Row](prefix, "work_email", None, None)(x => extract(x).workEmail, (row, value) => merge(row, extract(row).copy(workEmail = value))) - override val sector = new Field[Sector, Row](prefix, "sector", None, Some("myschema.sector"))(x => extract(x).sector, (row, value) => merge(row, extract(row).copy(sector = value))) - override val favoriteNumber = new Field[Number, Row](prefix, "favorite_number", None, Some("myschema.number"))(x => extract(x).favoriteNumber, (row, value) => merge(row, extract(row).copy(favoriteNumber = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, favouriteFootballClubId, name, nickName, blogUrl, email, phone, likesPizza, maritalStatusId, workEmail, sector, favoriteNumber) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/typo-dsl-shared/typo/dsl/Structure.scala b/typo-dsl-shared/typo/dsl/Structure.scala index 275b25847e..cc7a1b7020 100644 --- a/typo-dsl-shared/typo/dsl/Structure.scala +++ b/typo-dsl-shared/typo/dsl/Structure.scala @@ -23,9 +23,7 @@ trait Structure[Fields[_], Row] { } object Structure { - trait Relation[Fields[_], OriginalRow, Row] extends Structure[Fields, Row] { outer: Fields[Row] => - - override val fields: Fields[Row] = this + trait Relation[Fields[_], OriginalRow, Row] extends Structure[Fields, Row] { outer => val prefix: Option[String] val extract: Row => OriginalRow diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala index 720ed330a1..9cb3325aa1 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.department.DepartmentId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait DViewFields[Row] { val id: Field[DepartmentId, Row] @@ -19,5 +21,27 @@ trait DViewFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala index 6cb9e2eb23..38ebf97f22 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("hr.d", DViewFields, DViewRow.rowParser) + SelectBuilderSql("hr.d", DViewFields.structure, DViewRow.rowParser) } override def selectAll(implicit c: Connection): List[DViewRow] = { SQL"""select "id", "departmentid", "name", "groupname", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala deleted file mode 100644 index ab458605c8..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package d - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala index 9557d3f03a..1d5e36b1af 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -34,5 +36,38 @@ trait EViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala index 5f71dfbe55..2e2112c3ce 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("hr.e", EViewFields, EViewRow.rowParser) + SelectBuilderSql("hr.e", EViewFields.structure, EViewRow.rowParser) } override def selectAll(implicit c: Connection): List[EViewRow] = { SQL"""select "id", "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala deleted file mode 100644 index 2a50379009..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package e - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala index 057cb8089a..d9fbd5167d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EdhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait EdhViewFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EdhViewFields extends EdhViewStructure[EdhViewRow](None, identity, (_, x) => x) +object EdhViewFields { + val structure: Relation[EdhViewFields, EdhViewRow, EdhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) + extends Relation[EdhViewFields, EdhViewRow, Row] { + + override val fields: EdhViewFields[Row] = new EdhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala index 9cd8d252a8..cf4a6ed7a0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class EdhViewRepoImpl extends EdhViewRepo { override def select: SelectBuilder[EdhViewFields, EdhViewRow] = { - SelectBuilderSql("hr.edh", EdhViewFields, EdhViewRow.rowParser) + SelectBuilderSql("hr.edh", EdhViewFields.structure, EdhViewRow.rowParser) } override def selectAll(implicit c: Connection): List[EdhViewRow] = { SQL"""select "id", "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala deleted file mode 100644 index 4ea9c21a49..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package edh - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EdhViewStructure[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) - extends Relation[EdhViewFields, EdhViewRow, Row] - with EdhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): EdhViewStructure[NewRow] = - new EdhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala index 048512420d..c8670a7fe5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait EphViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait EphViewFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EphViewFields extends EphViewStructure[EphViewRow](None, identity, (_, x) => x) +object EphViewFields { + val structure: Relation[EphViewFields, EphViewRow, EphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) + extends Relation[EphViewFields, EphViewRow, Row] { + + override val fields: EphViewFields[Row] = new EphViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala index 83099492f8..7976eccf3c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class EphViewRepoImpl extends EphViewRepo { override def select: SelectBuilder[EphViewFields, EphViewRow] = { - SelectBuilderSql("hr.eph", EphViewFields, EphViewRow.rowParser) + SelectBuilderSql("hr.eph", EphViewFields.structure, EphViewRow.rowParser) } override def selectAll(implicit c: Connection): List[EphViewRow] = { SQL"""select "id", "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala deleted file mode 100644 index 729f28f6bb..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package eph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class EphViewStructure[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) - extends Relation[EphViewFields, EphViewRow, Row] - with EphViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): EphViewStructure[NewRow] = - new EphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala index 1403c7be19..0fdb335f9b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JcViewFields[Row] { val id: Field[JobcandidateId, Row] @@ -21,5 +23,27 @@ trait JcViewFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JcViewFields extends JcViewStructure[JcViewRow](None, identity, (_, x) => x) +object JcViewFields { + val structure: Relation[JcViewFields, JcViewRow, JcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) + extends Relation[JcViewFields, JcViewRow, Row] { + + override val fields: JcViewFields[Row] = new JcViewFields[Row] { + override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala index dd9ea3ab10..dc09d2d8c9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class JcViewRepoImpl extends JcViewRepo { override def select: SelectBuilder[JcViewFields, JcViewRow] = { - SelectBuilderSql("hr.jc", JcViewFields, JcViewRow.rowParser) + SelectBuilderSql("hr.jc", JcViewFields.structure, JcViewRow.rowParser) } override def selectAll(implicit c: Connection): List[JcViewRow] = { SQL"""select "id", "jobcandidateid", "businessentityid", "resume", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala deleted file mode 100644 index fa1d098dfb..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package jc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JcViewStructure[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) - extends Relation[JcViewFields, JcViewRow, Row] - with JcViewFields[Row] { outer => - - override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): JcViewStructure[NewRow] = - new JcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala index e163d56da1..8fc6d1f010 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoLocalTime import adventureworks.humanresources.shift.ShiftId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[ShiftId, Row] @@ -21,5 +23,28 @@ trait SViewFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala index 57535a553a..57ccfe7027 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("hr.s", SViewFields, SViewRow.rowParser) + SelectBuilderSql("hr.s", SViewFields.structure, SViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SViewRow] = { SQL"""select "id", "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala deleted file mode 100644 index e3a4cd57a3..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.humanresources.shift.ShiftId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala index d5c56ff6f0..910a3a1b0c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala @@ -10,7 +10,9 @@ package department import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait DepartmentFields[Row] { val departmentid: IdField[DepartmentId, Row] @@ -18,5 +20,26 @@ trait DepartmentFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DepartmentFields extends DepartmentStructure[DepartmentRow](None, identity, (_, x) => x) +object DepartmentFields { + val structure: Relation[DepartmentFields, DepartmentRow, DepartmentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) + extends Relation[DepartmentFields, DepartmentRow, Row] { + + override val fields: DepartmentFields[Row] = new DepartmentFields[Row] { + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala index 28ba26262e..ba1a97f2bb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala @@ -28,7 +28,7 @@ class DepartmentRepoImpl extends DepartmentRepo { SQL"""delete from humanresources.department where "departmentid" = ${ParameterValue(departmentid, null, DepartmentId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilder("humanresources.department", DepartmentFields) + DeleteBuilder("humanresources.department", DepartmentFields.structure) } override def insert(unsaved: DepartmentRow)(implicit c: Connection): DepartmentRow = { SQL"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") @@ -75,7 +75,7 @@ class DepartmentRepoImpl extends DepartmentRepo { streamingInsert(s"""COPY humanresources.department("name", "groupname", "departmentid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(DepartmentRowUnsaved.text, c) } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderSql("humanresources.department", DepartmentFields, DepartmentRow.rowParser) + SelectBuilderSql("humanresources.department", DepartmentFields.structure, DepartmentRow.rowParser) } override def selectAll(implicit c: Connection): List[DepartmentRow] = { SQL"""select "departmentid", "name", "groupname", "modifieddate"::text @@ -105,7 +105,7 @@ class DepartmentRepoImpl extends DepartmentRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilder("humanresources.department", DepartmentFields, DepartmentRow.rowParser) + UpdateBuilder("humanresources.department", DepartmentFields.structure, DepartmentRow.rowParser) } override def upsert(unsaved: DepartmentRow)(implicit c: Connection): DepartmentRow = { SQL"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala index 79c3fd53a0..422464f35a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala @@ -25,7 +25,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], map.remove(departmentid).isDefined } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilderMock(DeleteParams.empty, DepartmentFields, map) + DeleteBuilderMock(DeleteParams.empty, DepartmentFields.structure.fields, map) } override def insert(unsaved: DepartmentRow)(implicit c: Connection): DepartmentRow = { val _ = if (map.contains(unsaved.departmentid)) @@ -53,7 +53,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], unsaved.size.toLong } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderMock(DepartmentFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(DepartmentFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[DepartmentRow] = { map.values.toList @@ -74,7 +74,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], } } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilderMock(UpdateParams.empty, DepartmentFields, map) + UpdateBuilderMock(UpdateParams.empty, DepartmentFields.structure.fields, map) } override def upsert(unsaved: DepartmentRow)(implicit c: Connection): DepartmentRow = { map.put(unsaved.departmentid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala deleted file mode 100644 index 50ec794eff..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package department - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class DepartmentStructure[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) - extends Relation[DepartmentFields, DepartmentRow, Row] - with DepartmentFields[Row] { outer => - - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): DepartmentStructure[NewRow] = - new DepartmentStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala index 95087474b4..0547baa076 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeeFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -34,5 +36,37 @@ trait EmployeeFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EmployeeFields extends EmployeeStructure[EmployeeRow](None, identity, (_, x) => x) +object EmployeeFields { + val structure: Relation[EmployeeFields, EmployeeRow, EmployeeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) + extends Relation[EmployeeFields, EmployeeRow, Row] { + + override val fields: EmployeeFields[Row] = new EmployeeFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index ead94d52d5..c76e153ff6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -34,7 +34,7 @@ class EmployeeRepoImpl extends EmployeeRepo { SQL"""delete from humanresources.employee where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilder("humanresources.employee", EmployeeFields) + DeleteBuilder("humanresources.employee", EmployeeFields.structure) } override def insert(unsaved: EmployeeRow)(implicit c: Connection): EmployeeRow = { SQL"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") @@ -107,7 +107,7 @@ class EmployeeRepoImpl extends EmployeeRepo { streamingInsert(s"""COPY humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeeRowUnsaved.text, c) } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderSql("humanresources.employee", EmployeeFields, EmployeeRow.rowParser) + SelectBuilderSql("humanresources.employee", EmployeeFields.structure, EmployeeRow.rowParser) } override def selectAll(implicit c: Connection): List[EmployeeRow] = { SQL"""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" @@ -148,7 +148,7 @@ class EmployeeRepoImpl extends EmployeeRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilder("humanresources.employee", EmployeeFields, EmployeeRow.rowParser) + UpdateBuilder("humanresources.employee", EmployeeFields.structure, EmployeeRow.rowParser) } override def upsert(unsaved: EmployeeRow)(implicit c: Connection): EmployeeRow = { SQL"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala index df2222d647..07681070a8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala @@ -26,7 +26,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeeFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeeFields.structure.fields, map) } override def insert(unsaved: EmployeeRow)(implicit c: Connection): EmployeeRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], unsaved.size.toLong } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderMock(EmployeeFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(EmployeeFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[EmployeeRow] = { map.values.toList @@ -75,7 +75,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], } } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeeFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeeFields.structure.fields, map) } override def upsert(unsaved: EmployeeRow)(implicit c: Connection): EmployeeRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala deleted file mode 100644 index 2193c5da6e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employee - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeeStructure[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) - extends Relation[EmployeeFields, EmployeeRow, Row] - with EmployeeFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): EmployeeStructure[NewRow] = - new EmployeeStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala index e3dd76934a..2a822b24e7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala @@ -13,8 +13,10 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeedepartmenthistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait EmployeedepartmenthistoryFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeedepartmenthistoryFields extends EmployeedepartmenthistoryStructure[EmployeedepartmenthistoryRow](None, identity, (_, x) => x) +object EmployeedepartmenthistoryFields { + val structure: Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, EmployeedepartmenthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) + extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] { + + override val fields: EmployeedepartmenthistoryFields[Row] = new EmployeedepartmenthistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala index eed1b86353..d62492387d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala @@ -32,7 +32,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { SQL"""delete from humanresources.employeedepartmenthistory where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "startdate" = ${ParameterValue(compositeId.startdate, null, TypoLocalDate.toStatement)} AND "departmentid" = ${ParameterValue(compositeId.departmentid, null, DepartmentId.toStatement)} AND "shiftid" = ${ParameterValue(compositeId.shiftid, null, ShiftId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields) + DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure) } override def insert(unsaved: EmployeedepartmenthistoryRow)(implicit c: Connection): EmployeedepartmenthistoryRow = { SQL"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") @@ -78,7 +78,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { streamingInsert(s"""COPY humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeedepartmenthistoryRowUnsaved.text, c) } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.rowParser) + SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[EmployeedepartmenthistoryRow] = { SQL"""select "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text @@ -100,7 +100,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.rowParser) + UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.rowParser) } override def upsert(unsaved: EmployeedepartmenthistoryRow)(implicit c: Connection): EmployeedepartmenthistoryRow = { SQL"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala index f86e4a0bb9..ced03bb48f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala @@ -25,7 +25,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto map.remove(compositeId).isDefined } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def insert(unsaved: EmployeedepartmenthistoryRow)(implicit c: Connection): EmployeedepartmenthistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto unsaved.size.toLong } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderMock(EmployeedepartmenthistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(EmployeedepartmenthistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[EmployeedepartmenthistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto } } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeedepartmenthistoryRow)(implicit c: Connection): EmployeedepartmenthistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala deleted file mode 100644 index 7c99ac336d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeedepartmenthistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) - extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] - with EmployeedepartmenthistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): EmployeedepartmenthistoryStructure[NewRow] = - new EmployeedepartmenthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala index c06bb4aaff..fdce4a482d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait EmployeepayhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait EmployeepayhistoryFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeepayhistoryFields extends EmployeepayhistoryStructure[EmployeepayhistoryRow](None, identity, (_, x) => x) +object EmployeepayhistoryFields { + val structure: Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, EmployeepayhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) + extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] { + + override val fields: EmployeepayhistoryFields[Row] = new EmployeepayhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala index 3ff36000e6..9005b7b4fa 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala @@ -30,7 +30,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { SQL"""delete from humanresources.employeepayhistory where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "ratechangedate" = ${ParameterValue(compositeId.ratechangedate, null, TypoLocalDateTime.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields) + DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure) } override def insert(unsaved: EmployeepayhistoryRow)(implicit c: Connection): EmployeepayhistoryRow = { SQL"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") @@ -75,7 +75,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { streamingInsert(s"""COPY humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeepayhistoryRowUnsaved.text, c) } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.rowParser) + SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[EmployeepayhistoryRow] = { SQL"""select "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text @@ -98,7 +98,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.rowParser) + UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.rowParser) } override def upsert(unsaved: EmployeepayhistoryRow)(implicit c: Connection): EmployeepayhistoryRow = { SQL"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala index 7304094aee..63e3de0a84 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala @@ -25,7 +25,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, map.remove(compositeId).isDefined } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def insert(unsaved: EmployeepayhistoryRow)(implicit c: Connection): EmployeepayhistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, unsaved.size.toLong } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderMock(EmployeepayhistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(EmployeepayhistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[EmployeepayhistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, } } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeepayhistoryRow)(implicit c: Connection): EmployeepayhistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala deleted file mode 100644 index 6956bed217..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeepayhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class EmployeepayhistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) - extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] - with EmployeepayhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): EmployeepayhistoryStructure[NewRow] = - new EmployeepayhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala index f77da744f2..21169ddc0f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JobcandidateFields[Row] { val jobcandidateid: IdField[JobcandidateId, Row] @@ -20,5 +22,26 @@ trait JobcandidateFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JobcandidateFields extends JobcandidateStructure[JobcandidateRow](None, identity, (_, x) => x) +object JobcandidateFields { + val structure: Relation[JobcandidateFields, JobcandidateRow, JobcandidateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) + extends Relation[JobcandidateFields, JobcandidateRow, Row] { + + override val fields: JobcandidateFields[Row] = new JobcandidateFields[Row] { + override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala index e98e46412b..c9389ae3a7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala @@ -30,7 +30,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { SQL"""delete from humanresources.jobcandidate where "jobcandidateid" = ${ParameterValue(jobcandidateid, null, JobcandidateId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilder("humanresources.jobcandidate", JobcandidateFields) + DeleteBuilder("humanresources.jobcandidate", JobcandidateFields.structure) } override def insert(unsaved: JobcandidateRow)(implicit c: Connection): JobcandidateRow = { SQL"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") @@ -77,7 +77,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { streamingInsert(s"""COPY humanresources.jobcandidate("businessentityid", "resume", "jobcandidateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(JobcandidateRowUnsaved.text, c) } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.rowParser) + SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.rowParser) } override def selectAll(implicit c: Connection): List[JobcandidateRow] = { SQL"""select "jobcandidateid", "businessentityid", "resume", "modifieddate"::text @@ -107,7 +107,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilder("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.rowParser) + UpdateBuilder("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.rowParser) } override def upsert(unsaved: JobcandidateRow)(implicit c: Connection): JobcandidateRow = { SQL"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala index c07e107b86..959fa6cbd3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala @@ -25,7 +25,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate map.remove(jobcandidateid).isDefined } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilderMock(DeleteParams.empty, JobcandidateFields, map) + DeleteBuilderMock(DeleteParams.empty, JobcandidateFields.structure.fields, map) } override def insert(unsaved: JobcandidateRow)(implicit c: Connection): JobcandidateRow = { val _ = if (map.contains(unsaved.jobcandidateid)) @@ -53,7 +53,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate unsaved.size.toLong } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderMock(JobcandidateFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(JobcandidateFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[JobcandidateRow] = { map.values.toList @@ -74,7 +74,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate } } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilderMock(UpdateParams.empty, JobcandidateFields, map) + UpdateBuilderMock(UpdateParams.empty, JobcandidateFields.structure.fields, map) } override def upsert(unsaved: JobcandidateRow)(implicit c: Connection): JobcandidateRow = { map.put(unsaved.jobcandidateid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala deleted file mode 100644 index 067bb2b939..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package jobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JobcandidateStructure[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) - extends Relation[JobcandidateFields, JobcandidateRow, Row] - with JobcandidateFields[Row] { outer => - - override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): JobcandidateStructure[NewRow] = - new JobcandidateStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala index a2fdea72e1..bdcf4f3406 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoLocalTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShiftFields[Row] { val shiftid: IdField[ShiftId, Row] @@ -20,5 +22,27 @@ trait ShiftFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShiftFields extends ShiftStructure[ShiftRow](None, identity, (_, x) => x) +object ShiftFields { + val structure: Relation[ShiftFields, ShiftRow, ShiftRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) + extends Relation[ShiftFields, ShiftRow, Row] { + + override val fields: ShiftFields[Row] = new ShiftFields[Row] { + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala index c831495f83..9b41e51f59 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala @@ -29,7 +29,7 @@ class ShiftRepoImpl extends ShiftRepo { SQL"""delete from humanresources.shift where "shiftid" = ${ParameterValue(shiftid, null, ShiftId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilder("humanresources.shift", ShiftFields) + DeleteBuilder("humanresources.shift", ShiftFields.structure) } override def insert(unsaved: ShiftRow)(implicit c: Connection): ShiftRow = { SQL"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") @@ -77,7 +77,7 @@ class ShiftRepoImpl extends ShiftRepo { streamingInsert(s"""COPY humanresources.shift("name", "starttime", "endtime", "shiftid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShiftRowUnsaved.text, c) } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderSql("humanresources.shift", ShiftFields, ShiftRow.rowParser) + SelectBuilderSql("humanresources.shift", ShiftFields.structure, ShiftRow.rowParser) } override def selectAll(implicit c: Connection): List[ShiftRow] = { SQL"""select "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text @@ -108,7 +108,7 @@ class ShiftRepoImpl extends ShiftRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilder("humanresources.shift", ShiftFields, ShiftRow.rowParser) + UpdateBuilder("humanresources.shift", ShiftFields.structure, ShiftRow.rowParser) } override def upsert(unsaved: ShiftRow)(implicit c: Connection): ShiftRow = { SQL"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala index 686bc62fd1..8d50f05d93 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala @@ -25,7 +25,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], map.remove(shiftid).isDefined } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilderMock(DeleteParams.empty, ShiftFields, map) + DeleteBuilderMock(DeleteParams.empty, ShiftFields.structure.fields, map) } override def insert(unsaved: ShiftRow)(implicit c: Connection): ShiftRow = { val _ = if (map.contains(unsaved.shiftid)) @@ -53,7 +53,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], unsaved.size.toLong } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderMock(ShiftFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ShiftFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ShiftRow] = { map.values.toList @@ -74,7 +74,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], } } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilderMock(UpdateParams.empty, ShiftFields, map) + UpdateBuilderMock(UpdateParams.empty, ShiftFields.structure.fields, map) } override def upsert(unsaved: ShiftRow)(implicit c: Connection): ShiftRow = { map.put(unsaved.shiftid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala deleted file mode 100644 index b26d189a1a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package shift - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShiftStructure[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) - extends Relation[ShiftFields, ShiftRow, Row] - with ShiftFields[Row] { outer => - - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): ShiftStructure[NewRow] = - new ShiftStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 1d61296667..1bdfd70f5c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeeViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VemployeeViewFields[Row] { val countryregionname: Field[Name, Row] val additionalcontactinfo: OptField[TypoXml, Row] } -object VemployeeViewFields extends VemployeeViewStructure[VemployeeViewRow](None, identity, (_, x) => x) +object VemployeeViewFields { + val structure: Relation[VemployeeViewFields, VemployeeViewRow, VemployeeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) + extends Relation[VemployeeViewFields, VemployeeViewRow, Row] { + + override val fields: VemployeeViewFields[Row] = new VemployeeViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.additionalcontactinfo) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala index fe1fc43d36..6266a168da 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VemployeeViewRepoImpl extends VemployeeViewRepo { override def select: SelectBuilder[VemployeeViewFields, VemployeeViewRow] = { - SelectBuilderSql("humanresources.vemployee", VemployeeViewFields, VemployeeViewRow.rowParser) + SelectBuilderSql("humanresources.vemployee", VemployeeViewFields.structure, VemployeeViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VemployeeViewRow] = { SQL"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala deleted file mode 100644 index 62e865c75f..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployee - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeeViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) - extends Relation[VemployeeViewFields, VemployeeViewRow, Row] - with VemployeeViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, additionalcontactinfo) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): VemployeeViewStructure[NewRow] = - new VemployeeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala index 1ecb4d0b1c..efa2687075 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmentViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait VemployeedepartmentViewFields[Row] { val groupname: Field[Name, Row] val startdate: Field[TypoLocalDate, Row] } -object VemployeedepartmentViewFields extends VemployeedepartmentViewStructure[VemployeedepartmentViewRow](None, identity, (_, x) => x) +object VemployeedepartmentViewFields { + val structure: Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, VemployeedepartmentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) + extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] { + + override val fields: VemployeedepartmentViewFields[Row] = new VemployeedepartmentViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.department, fields.groupname, fields.startdate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala index 0e9d547a7a..14eb65f7ce 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VemployeedepartmentViewRepoImpl extends VemployeedepartmentViewRepo { override def select: SelectBuilder[VemployeedepartmentViewFields, VemployeedepartmentViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields, VemployeedepartmentViewRow.rowParser) + SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields.structure, VemployeedepartmentViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VemployeedepartmentViewRow] = { SQL"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "department", "groupname", "startdate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala deleted file mode 100644 index 2d36b7de0c..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmentViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) - extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] - with VemployeedepartmentViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, department, groupname, startdate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): VemployeedepartmentViewStructure[NewRow] = - new VemployeedepartmentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala index 0b8e99af1e..03c889b42f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmenthistoryViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,33 @@ trait VemployeedepartmenthistoryViewFields[Row] { val startdate: Field[TypoLocalDate, Row] val enddate: OptField[TypoLocalDate, Row] } -object VemployeedepartmenthistoryViewFields extends VemployeedepartmenthistoryViewStructure[VemployeedepartmenthistoryViewRow](None, identity, (_, x) => x) +object VemployeedepartmenthistoryViewFields { + val structure: Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, VemployeedepartmenthistoryViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) + extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] { + + override val fields: VemployeedepartmenthistoryViewFields[Row] = new VemployeedepartmenthistoryViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.shift, fields.department, fields.groupname, fields.startdate, fields.enddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala index f6fc2d7a70..fb05fb49bc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VemployeedepartmenthistoryViewRepoImpl extends VemployeedepartmenthistoryViewRepo { override def select: SelectBuilder[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow.rowParser) + SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields.structure, VemployeedepartmenthistoryViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VemployeedepartmenthistoryViewRow] = { SQL"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "shift", "department", "groupname", "startdate"::text, "enddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala deleted file mode 100644 index a4d7298c70..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmenthistoryViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) - extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] - with VemployeedepartmenthistoryViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, shift, department, groupname, startdate, enddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): VemployeedepartmenthistoryViewStructure[NewRow] = - new VemployeedepartmenthistoryViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala index 1f35768849..e39ea13cba 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -31,5 +33,38 @@ trait VjobcandidateViewFields[Row] { val WebSite: OptField[String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VjobcandidateViewFields extends VjobcandidateViewStructure[VjobcandidateViewRow](None, identity, (_, x) => x) +object VjobcandidateViewFields { + val structure: Relation[VjobcandidateViewFields, VjobcandidateViewRow, VjobcandidateViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) + extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] { + + override val fields: VjobcandidateViewFields[Row] = new VjobcandidateViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) + override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) + override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) + override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) + override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) + override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) + override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) + override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) + override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) + override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) + override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) + override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) + override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.NamePrefix, fields.NameFirst, fields.NameMiddle, fields.NameLast, fields.NameSuffix, fields.Skills, fields.AddrType, fields.AddrLocCountryRegion, fields.AddrLocState, fields.AddrLocCity, fields.AddrPostalCode, fields.EMail, fields.WebSite, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala index 923b0af7ca..ec8779ad22 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateViewRepoImpl extends VjobcandidateViewRepo { override def select: SelectBuilder[VjobcandidateViewFields, VjobcandidateViewRow] = { - SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields, VjobcandidateViewRow.rowParser) + SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields.structure, VjobcandidateViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VjobcandidateViewRow] = { SQL"""select "jobcandidateid", "businessentityid", "Name.Prefix", "Name.First", "Name.Middle", "Name.Last", "Name.Suffix", "Skills", "Addr.Type", "Addr.Loc.CountryRegion", "Addr.Loc.State", "Addr.Loc.City", "Addr.PostalCode", "EMail", "WebSite", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala deleted file mode 100644 index c2523ce854..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala +++ /dev/null @@ -1,44 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) - extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] - with VjobcandidateViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) - override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) - override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) - override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) - override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) - override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) - override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) - override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) - override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) - override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) - override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) - override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) - override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, NamePrefix, NameFirst, NameMiddle, NameLast, NameSuffix, Skills, AddrType, AddrLocCountryRegion, AddrLocState, AddrLocCity, AddrPostalCode, EMail, WebSite, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): VjobcandidateViewStructure[NewRow] = - new VjobcandidateViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala index c404685066..97c87e74fd 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateeducation import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateeducationViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -27,5 +29,35 @@ trait VjobcandidateeducationViewFields[Row] { val EduLocState: OptField[/* max 100 chars */ String, Row] val EduLocCity: OptField[/* max 100 chars */ String, Row] } -object VjobcandidateeducationViewFields extends VjobcandidateeducationViewStructure[VjobcandidateeducationViewRow](None, identity, (_, x) => x) +object VjobcandidateeducationViewFields { + val structure: Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, VjobcandidateeducationViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) + extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] { + + override val fields: VjobcandidateeducationViewFields[Row] = new VjobcandidateeducationViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) + override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) + override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) + override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) + override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) + override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) + override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) + override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) + override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) + override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) + override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) + override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EduLevel, fields.EduStartDate, fields.EduEndDate, fields.EduDegree, fields.EduMajor, fields.EduMinor, fields.EduGPA, fields.EduGPAScale, fields.EduSchool, fields.EduLocCountryRegion, fields.EduLocState, fields.EduLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala index 15910fbf4e..f1eba1ef76 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateeducationViewRepoImpl extends VjobcandidateeducationViewRepo { override def select: SelectBuilder[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields, VjobcandidateeducationViewRow.rowParser) + SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields.structure, VjobcandidateeducationViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VjobcandidateeducationViewRow] = { SQL"""select "jobcandidateid", "Edu.Level", "Edu.StartDate"::text, "Edu.EndDate"::text, "Edu.Degree", "Edu.Major", "Edu.Minor", "Edu.GPA", "Edu.GPAScale", "Edu.School", "Edu.Loc.CountryRegion", "Edu.Loc.State", "Edu.Loc.City" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala deleted file mode 100644 index f15b3290a9..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateeducation - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateeducationViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) - extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] - with VjobcandidateeducationViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) - override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) - override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) - override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) - override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) - override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) - override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) - override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) - override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) - override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) - override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) - override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EduLevel, EduStartDate, EduEndDate, EduDegree, EduMajor, EduMinor, EduGPA, EduGPAScale, EduSchool, EduLocCountryRegion, EduLocState, EduLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): VjobcandidateeducationViewStructure[NewRow] = - new VjobcandidateeducationViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala index f7df4754b7..b9f6602b2f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateemployment import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateemploymentViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -25,5 +27,33 @@ trait VjobcandidateemploymentViewFields[Row] { val EmpLocState: OptField[String, Row] val EmpLocCity: OptField[String, Row] } -object VjobcandidateemploymentViewFields extends VjobcandidateemploymentViewStructure[VjobcandidateemploymentViewRow](None, identity, (_, x) => x) +object VjobcandidateemploymentViewFields { + val structure: Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, VjobcandidateemploymentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) + extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] { + + override val fields: VjobcandidateemploymentViewFields[Row] = new VjobcandidateemploymentViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) + override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) + override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) + override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) + override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) + override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) + override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) + override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) + override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) + override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EmpStartDate, fields.EmpEndDate, fields.EmpOrgName, fields.EmpJobTitle, fields.EmpResponsibility, fields.EmpFunctionCategory, fields.EmpIndustryCategory, fields.EmpLocCountryRegion, fields.EmpLocState, fields.EmpLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala index 281bf068d8..7d267863b4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateemploymentViewRepoImpl extends VjobcandidateemploymentViewRepo { override def select: SelectBuilder[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow.rowParser) + SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields.structure, VjobcandidateemploymentViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VjobcandidateemploymentViewRow] = { SQL"""select "jobcandidateid", "Emp.StartDate"::text, "Emp.EndDate"::text, "Emp.OrgName", "Emp.JobTitle", "Emp.Responsibility", "Emp.FunctionCategory", "Emp.IndustryCategory", "Emp.Loc.CountryRegion", "Emp.Loc.State", "Emp.Loc.City" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala deleted file mode 100644 index 249a29af29..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateemployment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateemploymentViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) - extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] - with VjobcandidateemploymentViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) - override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) - override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) - override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) - override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) - override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) - override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) - override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) - override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) - override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EmpStartDate, EmpEndDate, EmpOrgName, EmpJobTitle, EmpResponsibility, EmpFunctionCategory, EmpIndustryCategory, EmpLocCountryRegion, EmpLocState, EmpLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): VjobcandidateemploymentViewStructure[NewRow] = - new VjobcandidateemploymentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala index cc5665827f..5fecc56058 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.address.AddressId import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AViewFields[Row] { val id: Field[AddressId, Row] @@ -27,5 +29,32 @@ trait AViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AViewFields extends AViewStructure[AViewRow](None, identity, (_, x) => x) +object AViewFields { + val structure: Relation[AViewFields, AViewRow, AViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) + extends Relation[AViewFields, AViewRow, Row] { + + override val fields: AViewFields[Row] = new AViewFields[Row] { + override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala index 75f9b0e405..a5561b0628 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class AViewRepoImpl extends AViewRepo { override def select: SelectBuilder[AViewFields, AViewRow] = { - SelectBuilderSql("pe.a", AViewFields, AViewRow.rowParser) + SelectBuilderSql("pe.a", AViewFields.structure, AViewRow.rowParser) } override def selectAll(implicit c: Connection): List[AViewRow] = { SQL"""select "id", "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala deleted file mode 100644 index d35821de31..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package a - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AViewStructure[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) - extends Relation[AViewFields, AViewRow, Row] - with AViewFields[Row] { outer => - - override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): AViewStructure[NewRow] = - new AViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala index 6e39752a18..73d165bd6c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.addresstype.AddresstypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait AtViewFields[Row] { val id: Field[AddresstypeId, Row] @@ -20,5 +22,27 @@ trait AtViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AtViewFields extends AtViewStructure[AtViewRow](None, identity, (_, x) => x) +object AtViewFields { + val structure: Relation[AtViewFields, AtViewRow, AtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) + extends Relation[AtViewFields, AtViewRow, Row] { + + override val fields: AtViewFields[Row] = new AtViewFields[Row] { + override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala index 63dac87232..2988ecf2b5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class AtViewRepoImpl extends AtViewRepo { override def select: SelectBuilder[AtViewFields, AtViewRow] = { - SelectBuilderSql("pe.at", AtViewFields, AtViewRow.rowParser) + SelectBuilderSql("pe.at", AtViewFields.structure, AtViewRow.rowParser) } override def selectAll(implicit c: Connection): List[AtViewRow] = { SQL"""select "id", "addresstypeid", "name", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala deleted file mode 100644 index 381f16a972..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package at - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class AtViewStructure[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) - extends Relation[AtViewFields, AtViewRow, Row] - with AtViewFields[Row] { outer => - - override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): AtViewStructure[NewRow] = - new AtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala index f8bd6c8773..44a35fbf85 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait BeViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeViewFields extends BeViewStructure[BeViewRow](None, identity, (_, x) => x) +object BeViewFields { + val structure: Relation[BeViewFields, BeViewRow, BeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) + extends Relation[BeViewFields, BeViewRow, Row] { + + override val fields: BeViewFields[Row] = new BeViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala index be9c98d0a8..f8d9ac8df8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class BeViewRepoImpl extends BeViewRepo { override def select: SelectBuilder[BeViewFields, BeViewRow] = { - SelectBuilderSql("pe.be", BeViewFields, BeViewRow.rowParser) + SelectBuilderSql("pe.be", BeViewFields.structure, BeViewRow.rowParser) } override def selectAll(implicit c: Connection): List[BeViewRow] = { SQL"""select "id", "businessentityid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala deleted file mode 100644 index ef782f336b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package be - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeViewStructure[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) - extends Relation[BeViewFields, BeViewRow, Row] - with BeViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): BeViewStructure[NewRow] = - new BeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala index 38e0461608..953b76e826 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -22,5 +24,28 @@ trait BeaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeaViewFields extends BeaViewStructure[BeaViewRow](None, identity, (_, x) => x) +object BeaViewFields { + val structure: Relation[BeaViewFields, BeaViewRow, BeaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) + extends Relation[BeaViewFields, BeaViewRow, Row] { + + override val fields: BeaViewFields[Row] = new BeaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala index 8823405abf..3d02f5613f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class BeaViewRepoImpl extends BeaViewRepo { override def select: SelectBuilder[BeaViewFields, BeaViewRow] = { - SelectBuilderSql("pe.bea", BeaViewFields, BeaViewRow.rowParser) + SelectBuilderSql("pe.bea", BeaViewFields.structure, BeaViewRow.rowParser) } override def selectAll(implicit c: Connection): List[BeaViewRow] = { SQL"""select "id", "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala deleted file mode 100644 index 9939c42684..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bea - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeaViewStructure[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) - extends Relation[BeaViewFields, BeaViewRow, Row] - with BeaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): BeaViewStructure[NewRow] = - new BeaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala index 5724f5ff7a..0e872552fe 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BecViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -21,5 +23,28 @@ trait BecViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BecViewFields extends BecViewStructure[BecViewRow](None, identity, (_, x) => x) +object BecViewFields { + val structure: Relation[BecViewFields, BecViewRow, BecViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) + extends Relation[BecViewFields, BecViewRow, Row] { + + override val fields: BecViewFields[Row] = new BecViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala index e253c24875..7a540031c2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class BecViewRepoImpl extends BecViewRepo { override def select: SelectBuilder[BecViewFields, BecViewRow] = { - SelectBuilderSql("pe.bec", BecViewFields, BecViewRow.rowParser) + SelectBuilderSql("pe.bec", BecViewFields.structure, BecViewRow.rowParser) } override def selectAll(implicit c: Connection): List[BecViewRow] = { SQL"""select "id", "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala deleted file mode 100644 index a09467f9c3..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bec - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BecViewStructure[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) - extends Relation[BecViewFields, BecViewRow, Row] - with BecViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): BecViewStructure[NewRow] = - new BecViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala index 71ec6e83a7..b3f8dc09fb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala index 18169b8d86..fc1266f102 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("pe.cr", CrViewFields, CrViewRow.rowParser) + SelectBuilderSql("pe.cr", CrViewFields.structure, CrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CrViewRow] = { SQL"""select "countryregioncode", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala deleted file mode 100644 index 32b8f25325..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala index c00715d06d..05e359b886 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.contacttype.ContacttypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CtViewFields[Row] { val id: Field[ContacttypeId, Row] @@ -18,5 +20,26 @@ trait CtViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CtViewFields extends CtViewStructure[CtViewRow](None, identity, (_, x) => x) +object CtViewFields { + val structure: Relation[CtViewFields, CtViewRow, CtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) + extends Relation[CtViewFields, CtViewRow, Row] { + + override val fields: CtViewFields[Row] = new CtViewFields[Row] { + override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala index 1c5040e2e6..28c8605a71 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CtViewRepoImpl extends CtViewRepo { override def select: SelectBuilder[CtViewFields, CtViewRow] = { - SelectBuilderSql("pe.ct", CtViewFields, CtViewRow.rowParser) + SelectBuilderSql("pe.ct", CtViewFields.structure, CtViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CtViewRow] = { SQL"""select "id", "contacttypeid", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala deleted file mode 100644 index a614c2a88f..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package ct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.contacttype.ContacttypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CtViewStructure[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) - extends Relation[CtViewFields, CtViewRow, Row] - with CtViewFields[Row] { outer => - - override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): CtViewStructure[NewRow] = - new CtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala index 8ed9659638..22e526b4d7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[Int, Row] @@ -21,5 +23,28 @@ trait EViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala index 3cf93271ab..d7ac7ba409 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("pe.e", EViewFields, EViewRow.rowParser) + SelectBuilderSql("pe.e", EViewFields.structure, EViewRow.rowParser) } override def selectAll(implicit c: Connection): List[EViewRow] = { SQL"""select "id", "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala deleted file mode 100644 index 7003503552..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package e - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala index 8880bac907..1d5c84ab96 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -33,5 +35,36 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala index 5108f433ce..8ec411a9c9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pe.p", PViewFields, PViewRow.rowParser) + SelectBuilderSql("pe.p", PViewFields.structure, PViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PViewRow] = { SQL"""select "id", "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala deleted file mode 100644 index 29b01d51a8..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala index 4df2b951fc..8c828a7e8e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait PaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PaViewFields extends PaViewStructure[PaViewRow](None, identity, (_, x) => x) +object PaViewFields { + val structure: Relation[PaViewFields, PaViewRow, PaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) + extends Relation[PaViewFields, PaViewRow, Row] { + + override val fields: PaViewFields[Row] = new PaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala index 93c815968d..ac671a646b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PaViewRepoImpl extends PaViewRepo { override def select: SelectBuilder[PaViewFields, PaViewRow] = { - SelectBuilderSql("pe.pa", PaViewFields, PaViewRow.rowParser) + SelectBuilderSql("pe.pa", PaViewFields.structure, PaViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PaViewRow] = { SQL"""select "id", "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala deleted file mode 100644 index 77b7c56702..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pa - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PaViewStructure[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) - extends Relation[PaViewFields, PaViewRow, Row] - with PaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): PaViewStructure[NewRow] = - new PaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala index 9af94760e7..630721766e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PntViewFields[Row] { val id: Field[PhonenumbertypeId, Row] @@ -18,5 +20,26 @@ trait PntViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PntViewFields extends PntViewStructure[PntViewRow](None, identity, (_, x) => x) +object PntViewFields { + val structure: Relation[PntViewFields, PntViewRow, PntViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) + extends Relation[PntViewFields, PntViewRow, Row] { + + override val fields: PntViewFields[Row] = new PntViewFields[Row] { + override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala index dbbaf9c46a..faaf381ebe 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PntViewRepoImpl extends PntViewRepo { override def select: SelectBuilder[PntViewFields, PntViewRow] = { - SelectBuilderSql("pe.pnt", PntViewFields, PntViewRow.rowParser) + SelectBuilderSql("pe.pnt", PntViewFields.structure, PntViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PntViewRow] = { SQL"""select "id", "phonenumbertypeid", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala deleted file mode 100644 index d44f7f510a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pnt - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PntViewStructure[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) - extends Relation[PntViewFields, PntViewRow, Row] - with PntViewFields[Row] { outer => - - override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): PntViewStructure[NewRow] = - new PntViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala index 0b585f248d..f0171eea8c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PpViewFields[Row] { val phonenumbertypeid: Field[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala index 0d1aa879d3..8f3f3473e7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pe.pp", PpViewFields, PpViewRow.rowParser) + SelectBuilderSql("pe.pp", PpViewFields.structure, PpViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PpViewRow] = { SQL"""select "id", "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala deleted file mode 100644 index e7f3f91a3f..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala index 5a5f45bc45..0ab206b422 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala @@ -15,6 +15,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[StateprovinceId, Row] @@ -27,5 +29,31 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala index 6ed7590c95..ac09d71ff0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("pe.sp", SpViewFields, SpViewRow.rowParser) + SelectBuilderSql("pe.sp", SpViewFields.structure, SpViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SpViewRow] = { SQL"""select "id", "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala deleted file mode 100644 index 453b934478..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressFields.scala index b492204f15..b5c63e2aff 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AddressFields[Row] { val addressid: IdField[AddressId, Row] @@ -26,5 +28,31 @@ trait AddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddressFields extends AddressStructure[AddressRow](None, identity, (_, x) => x) +object AddressFields { + val structure: Relation[AddressFields, AddressRow, AddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) + extends Relation[AddressFields, AddressRow, Row] { + + override val fields: AddressFields[Row] = new AddressFields[Row] { + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala index ed81002991..7676fa21ff 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala @@ -32,7 +32,7 @@ class AddressRepoImpl extends AddressRepo { SQL"""delete from person.address where "addressid" = ${ParameterValue(addressid, null, AddressId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilder("person.address", AddressFields) + DeleteBuilder("person.address", AddressFields.structure) } override def insert(unsaved: AddressRow)(implicit c: Connection): AddressRow = { SQL"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") @@ -87,7 +87,7 @@ class AddressRepoImpl extends AddressRepo { streamingInsert(s"""COPY person.address("addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "addressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(AddressRowUnsaved.text, c) } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderSql("person.address", AddressFields, AddressRow.rowParser) + SelectBuilderSql("person.address", AddressFields.structure, AddressRow.rowParser) } override def selectAll(implicit c: Connection): List[AddressRow] = { SQL"""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text @@ -122,7 +122,7 @@ class AddressRepoImpl extends AddressRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilder("person.address", AddressFields, AddressRow.rowParser) + UpdateBuilder("person.address", AddressFields.structure, AddressRow.rowParser) } override def upsert(unsaved: AddressRow)(implicit c: Connection): AddressRow = { SQL"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala index 2febb58d64..89f3938bb0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala @@ -25,7 +25,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], map.remove(addressid).isDefined } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilderMock(DeleteParams.empty, AddressFields, map) + DeleteBuilderMock(DeleteParams.empty, AddressFields.structure.fields, map) } override def insert(unsaved: AddressRow)(implicit c: Connection): AddressRow = { val _ = if (map.contains(unsaved.addressid)) @@ -53,7 +53,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], unsaved.size.toLong } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderMock(AddressFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(AddressFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[AddressRow] = { map.values.toList @@ -74,7 +74,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], } } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilderMock(UpdateParams.empty, AddressFields, map) + UpdateBuilderMock(UpdateParams.empty, AddressFields.structure.fields, map) } override def upsert(unsaved: AddressRow)(implicit c: Connection): AddressRow = { map.put(unsaved.addressid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala deleted file mode 100644 index 58886fe980..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package address - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AddressStructure[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) - extends Relation[AddressFields, AddressRow, Row] - with AddressFields[Row] { outer => - - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): AddressStructure[NewRow] = - new AddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala index 3abd412d62..8af35e8c39 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait AddresstypeFields[Row] { val addresstypeid: IdField[AddresstypeId, Row] @@ -19,5 +21,26 @@ trait AddresstypeFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddresstypeFields extends AddresstypeStructure[AddresstypeRow](None, identity, (_, x) => x) +object AddresstypeFields { + val structure: Relation[AddresstypeFields, AddresstypeRow, AddresstypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) + extends Relation[AddresstypeFields, AddresstypeRow, Row] { + + override val fields: AddresstypeFields[Row] = new AddresstypeFields[Row] { + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala index 5c841a6ec6..6f4e467188 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala @@ -29,7 +29,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { SQL"""delete from person.addresstype where "addresstypeid" = ${ParameterValue(addresstypeid, null, AddresstypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilder("person.addresstype", AddresstypeFields) + DeleteBuilder("person.addresstype", AddresstypeFields.structure) } override def insert(unsaved: AddresstypeRow)(implicit c: Connection): AddresstypeRow = { SQL"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") @@ -79,7 +79,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { streamingInsert(s"""COPY person.addresstype("name", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(AddresstypeRowUnsaved.text, c) } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderSql("person.addresstype", AddresstypeFields, AddresstypeRow.rowParser) + SelectBuilderSql("person.addresstype", AddresstypeFields.structure, AddresstypeRow.rowParser) } override def selectAll(implicit c: Connection): List[AddresstypeRow] = { SQL"""select "addresstypeid", "name", "rowguid", "modifieddate"::text @@ -109,7 +109,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilder("person.addresstype", AddresstypeFields, AddresstypeRow.rowParser) + UpdateBuilder("person.addresstype", AddresstypeFields.structure, AddresstypeRow.rowParser) } override def upsert(unsaved: AddresstypeRow)(implicit c: Connection): AddresstypeRow = { SQL"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala index af032f1b58..19bb54872f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala @@ -25,7 +25,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow map.remove(addresstypeid).isDefined } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilderMock(DeleteParams.empty, AddresstypeFields, map) + DeleteBuilderMock(DeleteParams.empty, AddresstypeFields.structure.fields, map) } override def insert(unsaved: AddresstypeRow)(implicit c: Connection): AddresstypeRow = { val _ = if (map.contains(unsaved.addresstypeid)) @@ -53,7 +53,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow unsaved.size.toLong } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderMock(AddresstypeFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(AddresstypeFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[AddresstypeRow] = { map.values.toList @@ -74,7 +74,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow } } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilderMock(UpdateParams.empty, AddresstypeFields, map) + UpdateBuilderMock(UpdateParams.empty, AddresstypeFields.structure.fields, map) } override def upsert(unsaved: AddresstypeRow)(implicit c: Connection): AddresstypeRow = { map.put(unsaved.addresstypeid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala deleted file mode 100644 index 26194371da..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package addresstype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class AddresstypeStructure[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) - extends Relation[AddresstypeFields, AddresstypeRow, Row] - with AddresstypeFields[Row] { outer => - - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): AddresstypeStructure[NewRow] = - new AddresstypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala index fd3999d9a5..c722c5d75f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala @@ -10,12 +10,34 @@ package businessentity import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityFields extends BusinessentityStructure[BusinessentityRow](None, identity, (_, x) => x) +object BusinessentityFields { + val structure: Relation[BusinessentityFields, BusinessentityRow, BusinessentityRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) + extends Relation[BusinessentityFields, BusinessentityRow, Row] { + + override val fields: BusinessentityFields[Row] = new BusinessentityFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala index 4540d38a01..2bba3460cd 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala @@ -28,7 +28,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { SQL"""delete from person.businessentity where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilder("person.businessentity", BusinessentityFields) + DeleteBuilder("person.businessentity", BusinessentityFields.structure) } override def insert(unsaved: BusinessentityRow)(implicit c: Connection): BusinessentityRow = { SQL"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") @@ -77,7 +77,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { streamingInsert(s"""COPY person.businessentity("businessentityid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentityRowUnsaved.text, c) } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderSql("person.businessentity", BusinessentityFields, BusinessentityRow.rowParser) + SelectBuilderSql("person.businessentity", BusinessentityFields.structure, BusinessentityRow.rowParser) } override def selectAll(implicit c: Connection): List[BusinessentityRow] = { SQL"""select "businessentityid", "rowguid", "modifieddate"::text @@ -106,7 +106,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilder("person.businessentity", BusinessentityFields, BusinessentityRow.rowParser) + UpdateBuilder("person.businessentity", BusinessentityFields.structure, BusinessentityRow.rowParser) } override def upsert(unsaved: BusinessentityRow)(implicit c: Connection): BusinessentityRow = { SQL"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala index a54984b71c..0a4e65c60c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala @@ -25,7 +25,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityFields.structure.fields, map) } override def insert(unsaved: BusinessentityRow)(implicit c: Connection): BusinessentityRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -53,7 +53,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business unsaved.size.toLong } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderMock(BusinessentityFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(BusinessentityFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[BusinessentityRow] = { map.values.toList @@ -74,7 +74,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business } } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityFields.structure.fields, map) } override def upsert(unsaved: BusinessentityRow)(implicit c: Connection): BusinessentityRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala deleted file mode 100644 index d99792e42a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentity - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) - extends Relation[BusinessentityFields, BusinessentityRow, Row] - with BusinessentityFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): BusinessentityStructure[NewRow] = - new BusinessentityStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala index 69b5da117f..0e559e6517 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -22,5 +24,27 @@ trait BusinessentityaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityaddressFields extends BusinessentityaddressStructure[BusinessentityaddressRow](None, identity, (_, x) => x) +object BusinessentityaddressFields { + val structure: Relation[BusinessentityaddressFields, BusinessentityaddressRow, BusinessentityaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) + extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] { + + override val fields: BusinessentityaddressFields[Row] = new BusinessentityaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala index f68d23015b..db75322dce 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala @@ -31,7 +31,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { SQL"""delete from person.businessentityaddress where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "addressid" = ${ParameterValue(compositeId.addressid, null, AddressId.toStatement)} AND "addresstypeid" = ${ParameterValue(compositeId.addresstypeid, null, AddresstypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields) + DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields.structure) } override def insert(unsaved: BusinessentityaddressRow)(implicit c: Connection): BusinessentityaddressRow = { SQL"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") @@ -79,7 +79,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { streamingInsert(s"""COPY person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentityaddressRowUnsaved.text, c) } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.rowParser) + SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.rowParser) } override def selectAll(implicit c: Connection): List[BusinessentityaddressRow] = { SQL"""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text @@ -101,7 +101,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.rowParser) + UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.rowParser) } override def upsert(unsaved: BusinessentityaddressRow)(implicit c: Connection): BusinessentityaddressRow = { SQL"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala index 255e26f34f..46777a7d44 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala @@ -25,7 +25,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns map.remove(compositeId).isDefined } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields.structure.fields, map) } override def insert(unsaved: BusinessentityaddressRow)(implicit c: Connection): BusinessentityaddressRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns unsaved.size.toLong } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderMock(BusinessentityaddressFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(BusinessentityaddressFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[BusinessentityaddressRow] = { map.values.toList @@ -71,7 +71,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns } } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields.structure.fields, map) } override def upsert(unsaved: BusinessentityaddressRow)(implicit c: Connection): BusinessentityaddressRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala deleted file mode 100644 index 0b37a0b189..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentityaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityaddressStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) - extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] - with BusinessentityaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): BusinessentityaddressStructure[NewRow] = - new BusinessentityaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala index 883fa124b2..d4ff340ace 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentitycontactFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait BusinessentitycontactFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentitycontactFields extends BusinessentitycontactStructure[BusinessentitycontactRow](None, identity, (_, x) => x) +object BusinessentitycontactFields { + val structure: Relation[BusinessentitycontactFields, BusinessentitycontactRow, BusinessentitycontactRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) + extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] { + + override val fields: BusinessentitycontactFields[Row] = new BusinessentitycontactFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala index c1688995a4..edd5c8edd5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala @@ -30,7 +30,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { SQL"""delete from person.businessentitycontact where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "personid" = ${ParameterValue(compositeId.personid, null, BusinessentityId.toStatement)} AND "contacttypeid" = ${ParameterValue(compositeId.contacttypeid, null, ContacttypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields) + DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields.structure) } override def insert(unsaved: BusinessentitycontactRow)(implicit c: Connection): BusinessentitycontactRow = { SQL"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { streamingInsert(s"""COPY person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentitycontactRowUnsaved.text, c) } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.rowParser) + SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.rowParser) } override def selectAll(implicit c: Connection): List[BusinessentitycontactRow] = { SQL"""select "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text @@ -100,7 +100,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.rowParser) + UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.rowParser) } override def upsert(unsaved: BusinessentitycontactRow)(implicit c: Connection): BusinessentitycontactRow = { SQL"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala index 657ca30bae..155a269b7b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala @@ -25,7 +25,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns map.remove(compositeId).isDefined } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields.structure.fields, map) } override def insert(unsaved: BusinessentitycontactRow)(implicit c: Connection): BusinessentitycontactRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns unsaved.size.toLong } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderMock(BusinessentitycontactFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(BusinessentitycontactFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[BusinessentitycontactRow] = { map.values.toList @@ -71,7 +71,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns } } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields.structure.fields, map) } override def upsert(unsaved: BusinessentitycontactRow)(implicit c: Connection): BusinessentitycontactRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala deleted file mode 100644 index bd08013e4b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentitycontact - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentitycontactStructure[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) - extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] - with BusinessentitycontactFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): BusinessentitycontactStructure[NewRow] = - new BusinessentitycontactStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala index 13178f020f..08a63694ec 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala @@ -10,12 +10,34 @@ package contacttype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ContacttypeFields[Row] { val contacttypeid: IdField[ContacttypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ContacttypeFields extends ContacttypeStructure[ContacttypeRow](None, identity, (_, x) => x) +object ContacttypeFields { + val structure: Relation[ContacttypeFields, ContacttypeRow, ContacttypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) + extends Relation[ContacttypeFields, ContacttypeRow, Row] { + + override val fields: ContacttypeFields[Row] = new ContacttypeFields[Row] { + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala index 54fcefda5b..accc3110f7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala @@ -28,7 +28,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { SQL"""delete from person.contacttype where "contacttypeid" = ${ParameterValue(contacttypeid, null, ContacttypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilder("person.contacttype", ContacttypeFields) + DeleteBuilder("person.contacttype", ContacttypeFields.structure) } override def insert(unsaved: ContacttypeRow)(implicit c: Connection): ContacttypeRow = { SQL"""insert into person.contacttype("contacttypeid", "name", "modifieddate") @@ -74,7 +74,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { streamingInsert(s"""COPY person.contacttype("name", "contacttypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ContacttypeRowUnsaved.text, c) } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderSql("person.contacttype", ContacttypeFields, ContacttypeRow.rowParser) + SelectBuilderSql("person.contacttype", ContacttypeFields.structure, ContacttypeRow.rowParser) } override def selectAll(implicit c: Connection): List[ContacttypeRow] = { SQL"""select "contacttypeid", "name", "modifieddate"::text @@ -103,7 +103,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilder("person.contacttype", ContacttypeFields, ContacttypeRow.rowParser) + UpdateBuilder("person.contacttype", ContacttypeFields.structure, ContacttypeRow.rowParser) } override def upsert(unsaved: ContacttypeRow)(implicit c: Connection): ContacttypeRow = { SQL"""insert into person.contacttype("contacttypeid", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala index e824be2b13..ecdfe73d76 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala @@ -25,7 +25,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow map.remove(contacttypeid).isDefined } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilderMock(DeleteParams.empty, ContacttypeFields, map) + DeleteBuilderMock(DeleteParams.empty, ContacttypeFields.structure.fields, map) } override def insert(unsaved: ContacttypeRow)(implicit c: Connection): ContacttypeRow = { val _ = if (map.contains(unsaved.contacttypeid)) @@ -53,7 +53,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow unsaved.size.toLong } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderMock(ContacttypeFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ContacttypeFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ContacttypeRow] = { map.values.toList @@ -74,7 +74,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow } } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilderMock(UpdateParams.empty, ContacttypeFields, map) + UpdateBuilderMock(UpdateParams.empty, ContacttypeFields.structure.fields, map) } override def upsert(unsaved: ContacttypeRow)(implicit c: Connection): ContacttypeRow = { map.put(unsaved.contacttypeid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala deleted file mode 100644 index ead8cf9935..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package contacttype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ContacttypeStructure[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) - extends Relation[ContacttypeFields, ContacttypeRow, Row] - with ContacttypeFields[Row] { outer => - - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): ContacttypeStructure[NewRow] = - new ContacttypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala index 81df8b5160..ab09f11089 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala @@ -10,12 +10,34 @@ package countryregion import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregionFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregionFields extends CountryregionStructure[CountryregionRow](None, identity, (_, x) => x) +object CountryregionFields { + val structure: Relation[CountryregionFields, CountryregionRow, CountryregionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) + extends Relation[CountryregionFields, CountryregionRow, Row] { + + override val fields: CountryregionFields[Row] = new CountryregionFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala index ec86e1e542..0a89bcfb35 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala @@ -28,7 +28,7 @@ class CountryregionRepoImpl extends CountryregionRepo { SQL"""delete from person.countryregion where "countryregioncode" = ${ParameterValue(countryregioncode, null, CountryregionId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilder("person.countryregion", CountryregionFields) + DeleteBuilder("person.countryregion", CountryregionFields.structure) } override def insert(unsaved: CountryregionRow)(implicit c: Connection): CountryregionRow = { SQL"""insert into person.countryregion("countryregioncode", "name", "modifieddate") @@ -71,7 +71,7 @@ class CountryregionRepoImpl extends CountryregionRepo { streamingInsert(s"""COPY person.countryregion("countryregioncode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CountryregionRowUnsaved.text, c) } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderSql("person.countryregion", CountryregionFields, CountryregionRow.rowParser) + SelectBuilderSql("person.countryregion", CountryregionFields.structure, CountryregionRow.rowParser) } override def selectAll(implicit c: Connection): List[CountryregionRow] = { SQL"""select "countryregioncode", "name", "modifieddate"::text @@ -100,7 +100,7 @@ class CountryregionRepoImpl extends CountryregionRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilder("person.countryregion", CountryregionFields, CountryregionRow.rowParser) + UpdateBuilder("person.countryregion", CountryregionFields.structure, CountryregionRow.rowParser) } override def upsert(unsaved: CountryregionRow)(implicit c: Connection): CountryregionRow = { SQL"""insert into person.countryregion("countryregioncode", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala index f50baf519f..27daa2f60b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala @@ -25,7 +25,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg map.remove(countryregioncode).isDefined } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregionFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregionFields.structure.fields, map) } override def insert(unsaved: CountryregionRow)(implicit c: Connection): CountryregionRow = { val _ = if (map.contains(unsaved.countryregioncode)) @@ -53,7 +53,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg unsaved.size.toLong } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderMock(CountryregionFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CountryregionFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CountryregionRow] = { map.values.toList @@ -74,7 +74,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg } } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregionFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregionFields.structure.fields, map) } override def upsert(unsaved: CountryregionRow)(implicit c: Connection): CountryregionRow = { map.put(unsaved.countryregioncode, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala deleted file mode 100644 index 87d6ccbd31..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package countryregion - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregionStructure[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) - extends Relation[CountryregionFields, CountryregionRow, Row] - with CountryregionFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): CountryregionStructure[NewRow] = - new CountryregionStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala index 70ce831bfd..947814d7fe 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmailaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait EmailaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmailaddressFields extends EmailaddressStructure[EmailaddressRow](None, identity, (_, x) => x) +object EmailaddressFields { + val structure: Relation[EmailaddressFields, EmailaddressRow, EmailaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) + extends Relation[EmailaddressFields, EmailaddressRow, Row] { + + override val fields: EmailaddressFields[Row] = new EmailaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala index d161d6a5cc..c74a53c67e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala @@ -31,7 +31,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { SQL"""delete from person.emailaddress where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "emailaddressid" = ${ParameterValue(compositeId.emailaddressid, null, ToStatement.intToStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilder("person.emailaddress", EmailaddressFields) + DeleteBuilder("person.emailaddress", EmailaddressFields.structure) } override def insert(unsaved: EmailaddressRow)(implicit c: Connection): EmailaddressRow = { SQL"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") @@ -82,7 +82,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { streamingInsert(s"""COPY person.emailaddress("businessentityid", "emailaddress", "emailaddressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmailaddressRowUnsaved.text, c) } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderSql("person.emailaddress", EmailaddressFields, EmailaddressRow.rowParser) + SelectBuilderSql("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.rowParser) } override def selectAll(implicit c: Connection): List[EmailaddressRow] = { SQL"""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text @@ -105,7 +105,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilder("person.emailaddress", EmailaddressFields, EmailaddressRow.rowParser) + UpdateBuilder("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.rowParser) } override def upsert(unsaved: EmailaddressRow)(implicit c: Connection): EmailaddressRow = { SQL"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala index 7ba3d351bb..1437a59b49 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala @@ -25,7 +25,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress map.remove(compositeId).isDefined } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, EmailaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, EmailaddressFields.structure.fields, map) } override def insert(unsaved: EmailaddressRow)(implicit c: Connection): EmailaddressRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress unsaved.size.toLong } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderMock(EmailaddressFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(EmailaddressFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[EmailaddressRow] = { map.values.toList @@ -71,7 +71,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress } } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, EmailaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, EmailaddressFields.structure.fields, map) } override def upsert(unsaved: EmailaddressRow)(implicit c: Connection): EmailaddressRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala deleted file mode 100644 index 55cc11a4b2..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package emailaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmailaddressStructure[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) - extends Relation[EmailaddressFields, EmailaddressRow, Row] - with EmailaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): EmailaddressStructure[NewRow] = - new EmailaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala index 2d6eead3de..1318c25e43 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PasswordFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PasswordFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PasswordFields extends PasswordStructure[PasswordRow](None, identity, (_, x) => x) +object PasswordFields { + val structure: Relation[PasswordFields, PasswordRow, PasswordRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) + extends Relation[PasswordFields, PasswordRow, Row] { + + override val fields: PasswordFields[Row] = new PasswordFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala index e4400c722f..a98339620e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala @@ -30,7 +30,7 @@ class PasswordRepoImpl extends PasswordRepo { SQL"""delete from person.password where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilder("person.password", PasswordFields) + DeleteBuilder("person.password", PasswordFields.structure) } override def insert(unsaved: PasswordRow)(implicit c: Connection): PasswordRow = { SQL"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class PasswordRepoImpl extends PasswordRepo { streamingInsert(s"""COPY person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PasswordRowUnsaved.text, c) } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderSql("person.password", PasswordFields, PasswordRow.rowParser) + SelectBuilderSql("person.password", PasswordFields.structure, PasswordRow.rowParser) } override def selectAll(implicit c: Connection): List[PasswordRow] = { SQL"""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text @@ -109,7 +109,7 @@ class PasswordRepoImpl extends PasswordRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilder("person.password", PasswordFields, PasswordRow.rowParser) + UpdateBuilder("person.password", PasswordFields.structure, PasswordRow.rowParser) } override def upsert(unsaved: PasswordRow)(implicit c: Connection): PasswordRow = { SQL"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala index 46add97fca..db1abfbd34 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala @@ -26,7 +26,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilderMock(DeleteParams.empty, PasswordFields, map) + DeleteBuilderMock(DeleteParams.empty, PasswordFields.structure.fields, map) } override def insert(unsaved: PasswordRow)(implicit c: Connection): PasswordRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], unsaved.size.toLong } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderMock(PasswordFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PasswordFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PasswordRow] = { map.values.toList @@ -75,7 +75,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], } } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilderMock(UpdateParams.empty, PasswordFields, map) + UpdateBuilderMock(UpdateParams.empty, PasswordFields.structure.fields, map) } override def upsert(unsaved: PasswordRow)(implicit c: Connection): PasswordRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala deleted file mode 100644 index 60b557bdc7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package password - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PasswordStructure[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) - extends Relation[PasswordFields, PasswordRow, Row] - with PasswordFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): PasswordStructure[NewRow] = - new PasswordStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonFields.scala index 0119c6291d..ca8795be9b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonFields.scala @@ -15,8 +15,10 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -33,5 +35,35 @@ trait PersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala index 46cef47769..2be366f437 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala @@ -35,7 +35,7 @@ class PersonRepoImpl extends PersonRepo { SQL"""delete from person.person where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("person.person", PersonFields) + DeleteBuilder("person.person", PersonFields.structure) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") @@ -97,7 +97,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY person.person("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text, c) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("person.person", PersonFields, PersonRow.rowParser) + SelectBuilderSql("person.person", PersonFields.structure, PersonRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonRow] = { SQL"""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text @@ -136,7 +136,7 @@ class PersonRepoImpl extends PersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("person.person", PersonFields, PersonRow.rowParser) + UpdateBuilder("person.person", PersonFields.structure, PersonRow.rowParser) } override def upsert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { SQL"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala index 755f68a26a..9f9ced43fa 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala @@ -26,7 +26,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], unsaved.size.toLong } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonRow] = { map.values.toList @@ -75,7 +75,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def upsert(unsaved: PersonRow)(implicit c: Connection): PersonRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala deleted file mode 100644 index 123311e8d4..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package person - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala index f297954278..5795d7246d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersonphoneFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,26 @@ trait PersonphoneFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonphoneFields extends PersonphoneStructure[PersonphoneRow](None, identity, (_, x) => x) +object PersonphoneFields { + val structure: Relation[PersonphoneFields, PersonphoneRow, PersonphoneRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) + extends Relation[PersonphoneFields, PersonphoneRow, Row] { + + override val fields: PersonphoneFields[Row] = new PersonphoneFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala index ddc16afbd2..1ab49859e8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala @@ -30,7 +30,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { SQL"""delete from person.personphone where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "phonenumber" = ${ParameterValue(compositeId.phonenumber, null, Phone.toStatement)} AND "phonenumbertypeid" = ${ParameterValue(compositeId.phonenumbertypeid, null, PhonenumbertypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilder("person.personphone", PersonphoneFields) + DeleteBuilder("person.personphone", PersonphoneFields.structure) } override def insert(unsaved: PersonphoneRow)(implicit c: Connection): PersonphoneRow = { SQL"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") @@ -74,7 +74,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { streamingInsert(s"""COPY person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonphoneRowUnsaved.text, c) } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderSql("person.personphone", PersonphoneFields, PersonphoneRow.rowParser) + SelectBuilderSql("person.personphone", PersonphoneFields.structure, PersonphoneRow.rowParser) } override def selectAll(implicit c: Connection): List[PersonphoneRow] = { SQL"""select "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text @@ -95,7 +95,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilder("person.personphone", PersonphoneFields, PersonphoneRow.rowParser) + UpdateBuilder("person.personphone", PersonphoneFields.structure, PersonphoneRow.rowParser) } override def upsert(unsaved: PersonphoneRow)(implicit c: Connection): PersonphoneRow = { SQL"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala index f999d6b747..7149f2525b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala @@ -25,7 +25,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow map.remove(compositeId).isDefined } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonphoneFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonphoneFields.structure.fields, map) } override def insert(unsaved: PersonphoneRow)(implicit c: Connection): PersonphoneRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow unsaved.size.toLong } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderMock(PersonphoneFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersonphoneFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersonphoneRow] = { map.values.toList @@ -71,7 +71,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow } } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonphoneFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonphoneFields.structure.fields, map) } override def upsert(unsaved: PersonphoneRow)(implicit c: Connection): PersonphoneRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala deleted file mode 100644 index bc16c6660c..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package personphone - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersonphoneStructure[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) - extends Relation[PersonphoneFields, PersonphoneRow, Row] - with PersonphoneFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): PersonphoneStructure[NewRow] = - new PersonphoneStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala index 498a3475ef..6d7dcb3ee7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala @@ -10,12 +10,34 @@ package phonenumbertype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PhonenumbertypeFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PhonenumbertypeFields extends PhonenumbertypeStructure[PhonenumbertypeRow](None, identity, (_, x) => x) +object PhonenumbertypeFields { + val structure: Relation[PhonenumbertypeFields, PhonenumbertypeRow, PhonenumbertypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) + extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] { + + override val fields: PhonenumbertypeFields[Row] = new PhonenumbertypeFields[Row] { + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala index 57c2ee3c32..4e92d04ae3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala @@ -28,7 +28,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { SQL"""delete from person.phonenumbertype where "phonenumbertypeid" = ${ParameterValue(phonenumbertypeid, null, PhonenumbertypeId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields) + DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields.structure) } override def insert(unsaved: PhonenumbertypeRow)(implicit c: Connection): PhonenumbertypeRow = { SQL"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") @@ -74,7 +74,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { streamingInsert(s"""COPY person.phonenumbertype("name", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PhonenumbertypeRowUnsaved.text, c) } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.rowParser) + SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.rowParser) } override def selectAll(implicit c: Connection): List[PhonenumbertypeRow] = { SQL"""select "phonenumbertypeid", "name", "modifieddate"::text @@ -103,7 +103,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.rowParser) + UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.rowParser) } override def upsert(unsaved: PhonenumbertypeRow)(implicit c: Connection): PhonenumbertypeRow = { SQL"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala index da7fe01939..6e4e5f5673 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala @@ -25,7 +25,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen map.remove(phonenumbertypeid).isDefined } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields, map) + DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields.structure.fields, map) } override def insert(unsaved: PhonenumbertypeRow)(implicit c: Connection): PhonenumbertypeRow = { val _ = if (map.contains(unsaved.phonenumbertypeid)) @@ -53,7 +53,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen unsaved.size.toLong } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderMock(PhonenumbertypeFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PhonenumbertypeFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PhonenumbertypeRow] = { map.values.toList @@ -74,7 +74,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen } } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields, map) + UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields.structure.fields, map) } override def upsert(unsaved: PhonenumbertypeRow)(implicit c: Connection): PhonenumbertypeRow = { map.put(unsaved.phonenumbertypeid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala deleted file mode 100644 index d97624344a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package phonenumbertype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PhonenumbertypeStructure[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) - extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] - with PhonenumbertypeFields[Row] { outer => - - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): PhonenumbertypeStructure[NewRow] = - new PhonenumbertypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala index e08e645ce9..87e8c80487 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait StateprovinceFields[Row] { val stateprovinceid: IdField[StateprovinceId, Row] @@ -26,5 +28,30 @@ trait StateprovinceFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StateprovinceFields extends StateprovinceStructure[StateprovinceRow](None, identity, (_, x) => x) +object StateprovinceFields { + val structure: Relation[StateprovinceFields, StateprovinceRow, StateprovinceRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) + extends Relation[StateprovinceFields, StateprovinceRow, Row] { + + override val fields: StateprovinceFields[Row] = new StateprovinceFields[Row] { + override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala index 90d1dd14a2..4f96aa5280 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala @@ -33,7 +33,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { SQL"""delete from person.stateprovince where "stateprovinceid" = ${ParameterValue(stateprovinceid, null, StateprovinceId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilder("person.stateprovince", StateprovinceFields) + DeleteBuilder("person.stateprovince", StateprovinceFields.structure) } override def insert(unsaved: StateprovinceRow)(implicit c: Connection): StateprovinceRow = { SQL"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") @@ -90,7 +90,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { streamingInsert(s"""COPY person.stateprovince("stateprovincecode", "countryregioncode", "name", "territoryid", "stateprovinceid", "isonlystateprovinceflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(StateprovinceRowUnsaved.text, c) } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderSql("person.stateprovince", StateprovinceFields, StateprovinceRow.rowParser) + SelectBuilderSql("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.rowParser) } override def selectAll(implicit c: Connection): List[StateprovinceRow] = { SQL"""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text @@ -124,7 +124,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilder("person.stateprovince", StateprovinceFields, StateprovinceRow.rowParser) + UpdateBuilder("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.rowParser) } override def upsert(unsaved: StateprovinceRow)(implicit c: Connection): StateprovinceRow = { SQL"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala index 42cfe2d06a..d79e57e2fa 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala @@ -25,7 +25,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi map.remove(stateprovinceid).isDefined } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilderMock(DeleteParams.empty, StateprovinceFields, map) + DeleteBuilderMock(DeleteParams.empty, StateprovinceFields.structure.fields, map) } override def insert(unsaved: StateprovinceRow)(implicit c: Connection): StateprovinceRow = { val _ = if (map.contains(unsaved.stateprovinceid)) @@ -53,7 +53,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi unsaved.size.toLong } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderMock(StateprovinceFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(StateprovinceFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[StateprovinceRow] = { map.values.toList @@ -74,7 +74,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi } } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilderMock(UpdateParams.empty, StateprovinceFields, map) + UpdateBuilderMock(UpdateParams.empty, StateprovinceFields.structure.fields, map) } override def upsert(unsaved: StateprovinceRow)(implicit c: Connection): StateprovinceRow = { map.put(unsaved.stateprovinceid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala deleted file mode 100644 index 269d64f176..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package stateprovince - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class StateprovinceStructure[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) - extends Relation[StateprovinceFields, StateprovinceRow, Row] - with StateprovinceFields[Row] { outer => - - override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): StateprovinceStructure[NewRow] = - new StateprovinceStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala index c138112fbb..1df0730075 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VadditionalcontactinfoViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,39 @@ trait VadditionalcontactinfoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VadditionalcontactinfoViewFields extends VadditionalcontactinfoViewStructure[VadditionalcontactinfoViewRow](None, identity, (_, x) => x) +object VadditionalcontactinfoViewFields { + val structure: Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, VadditionalcontactinfoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) + extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] { + + override val fields: VadditionalcontactinfoViewFields[Row] = new VadditionalcontactinfoViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) + override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) + override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) + override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) + override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) + override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) + override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) + override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.firstname, fields.middlename, fields.lastname, fields.telephonenumber, fields.telephonespecialinstructions, fields.street, fields.city, fields.stateprovince, fields.postalcode, fields.countryregion, fields.homeaddressspecialinstructions, fields.emailaddress, fields.emailspecialinstructions, fields.emailtelephonenumber, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala index 1fc66c0c9e..f75063d306 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VadditionalcontactinfoViewRepoImpl extends VadditionalcontactinfoViewRepo { override def select: SelectBuilder[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow] = { - SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow.rowParser) + SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields.structure, VadditionalcontactinfoViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VadditionalcontactinfoViewRow] = { SQL"""select "businessentityid", "firstname", "middlename", "lastname", "telephonenumber", "telephonespecialinstructions", "street", "city", "stateprovince", "postalcode", "countryregion", "homeaddressspecialinstructions", "emailaddress", "emailspecialinstructions", "emailtelephonenumber", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala deleted file mode 100644 index 41f1bb48d2..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vadditionalcontactinfo - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VadditionalcontactinfoViewStructure[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) - extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] - with VadditionalcontactinfoViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) - override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) - override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) - override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) - override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) - override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) - override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) - override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, firstname, middlename, lastname, telephonenumber, telephonespecialinstructions, street, city, stateprovince, postalcode, countryregion, homeaddressspecialinstructions, emailaddress, emailspecialinstructions, emailtelephonenumber, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): VadditionalcontactinfoViewStructure[NewRow] = - new VadditionalcontactinfoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala index 0f86db826d..2ab1ff2c1c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala @@ -13,6 +13,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VstateprovincecountryregionMVFields[Row] { val stateprovinceid: Field[StateprovinceId, Row] @@ -23,5 +25,29 @@ trait VstateprovincecountryregionMVFields[Row] { val countryregioncode: Field[CountryregionId, Row] val countryregionname: Field[Name, Row] } -object VstateprovincecountryregionMVFields extends VstateprovincecountryregionMVStructure[VstateprovincecountryregionMVRow](None, identity, (_, x) => x) +object VstateprovincecountryregionMVFields { + val structure: Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, VstateprovincecountryregionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) + extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] { + + override val fields: VstateprovincecountryregionMVFields[Row] = new VstateprovincecountryregionMVFields[Row] { + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.isonlystateprovinceflag, fields.stateprovincename, fields.territoryid, fields.countryregioncode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala index d90c8fad50..a29d4003ac 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VstateprovincecountryregionMVRepoImpl extends VstateprovincecountryregionMVRepo { override def select: SelectBuilder[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow] = { - SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow.rowParser) + SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields.structure, VstateprovincecountryregionMVRow.rowParser) } override def selectAll(implicit c: Connection): List[VstateprovincecountryregionMVRow] = { SQL"""select "stateprovinceid", "stateprovincecode", "isonlystateprovinceflag", "stateprovincename", "territoryid", "countryregioncode", "countryregionname" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala deleted file mode 100644 index 13c82bdeb1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vstateprovincecountryregion - -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VstateprovincecountryregionMVStructure[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) - extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] - with VstateprovincecountryregionMVFields[Row] { outer => - - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, isonlystateprovinceflag, stateprovincename, territoryid, countryregioncode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): VstateprovincecountryregionMVStructure[NewRow] = - new VstateprovincecountryregionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala index 16f06fd6db..3a82b821f7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BomViewFields[Row] { val id: Field[Int, Row] @@ -26,5 +28,32 @@ trait BomViewFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BomViewFields extends BomViewStructure[BomViewRow](None, identity, (_, x) => x) +object BomViewFields { + val structure: Relation[BomViewFields, BomViewRow, BomViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) + extends Relation[BomViewFields, BomViewRow, Row] { + + override val fields: BomViewFields[Row] = new BomViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala index 1aa8806076..fbd5f188e4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class BomViewRepoImpl extends BomViewRepo { override def select: SelectBuilder[BomViewFields, BomViewRow] = { - SelectBuilderSql("pr.bom", BomViewFields, BomViewRow.rowParser) + SelectBuilderSql("pr.bom", BomViewFields.structure, BomViewRow.rowParser) } override def selectAll(implicit c: Connection): List[BomViewRow] = { SQL"""select "id", "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala deleted file mode 100644 index 2402b93eab..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package bom - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BomViewStructure[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) - extends Relation[BomViewFields, BomViewRow, Row] - with BomViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): BomViewStructure[NewRow] = - new BomViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala index 78024cc012..cb2b6e6f8a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.culture.CultureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CultureId, Row] @@ -18,5 +20,26 @@ trait CViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala index 76c1a05fad..c0765d8189 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("pr.c", CViewFields, CViewRow.rowParser) + SelectBuilderSql("pr.c", CViewFields.structure, CViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CViewRow] = { SQL"""select "id", "cultureid", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala deleted file mode 100644 index 126337859a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala index 943ce0ca8b..9593239b2f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.document.DocumentId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DViewFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala index bee3c9fd6a..a0320c1ba4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("pr.d", DViewFields, DViewRow.rowParser) + SelectBuilderSql("pr.d", DViewFields.structure, DViewRow.rowParser) } override def selectAll(implicit c: Connection): List[DViewRow] = { SQL"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala deleted file mode 100644 index d6d8e8a044..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package d - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.document.DocumentId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala index 1842ac7f71..25b815cfc5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.production.illustration.IllustrationId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IViewFields[Row] { val id: Field[IllustrationId, Row] @@ -19,5 +21,26 @@ trait IViewFields[Row] { val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IViewFields extends IViewStructure[IViewRow](None, identity, (_, x) => x) +object IViewFields { + val structure: Relation[IViewFields, IViewRow, IViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) + extends Relation[IViewFields, IViewRow, Row] { + + override val fields: IViewFields[Row] = new IViewFields[Row] { + override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala index a973381a10..0fc204b983 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class IViewRepoImpl extends IViewRepo { override def select: SelectBuilder[IViewFields, IViewRow] = { - SelectBuilderSql("pr.i", IViewFields, IViewRow.rowParser) + SelectBuilderSql("pr.i", IViewFields.structure, IViewRow.rowParser) } override def selectAll(implicit c: Connection): List[IViewRow] = { SQL"""select "id", "illustrationid", "diagram", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala deleted file mode 100644 index 7b45575a14..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package i - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.production.illustration.IllustrationId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IViewStructure[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) - extends Relation[IViewFields, IViewRow, Row] - with IViewFields[Row] { outer => - - override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): IViewStructure[NewRow] = - new IViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala index acb810ccab..77032968a6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.location.LocationId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait LViewFields[Row] { val id: Field[LocationId, Row] @@ -20,5 +22,28 @@ trait LViewFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LViewFields extends LViewStructure[LViewRow](None, identity, (_, x) => x) +object LViewFields { + val structure: Relation[LViewFields, LViewRow, LViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) + extends Relation[LViewFields, LViewRow, Row] { + + override val fields: LViewFields[Row] = new LViewFields[Row] { + override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala index f00cd94847..ec921c1f04 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class LViewRepoImpl extends LViewRepo { override def select: SelectBuilder[LViewFields, LViewRow] = { - SelectBuilderSql("pr.l", LViewFields, LViewRow.rowParser) + SelectBuilderSql("pr.l", LViewFields.structure, LViewRow.rowParser) } override def selectAll(implicit c: Connection): List[LViewRow] = { SQL"""select "id", "locationid", "name", "costrate", "availability", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala deleted file mode 100644 index 72d2c67f72..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package l - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.location.LocationId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class LViewStructure[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) - extends Relation[LViewFields, LViewRow, Row] - with LViewFields[Row] { outer => - - override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): LViewStructure[NewRow] = - new LViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala index eee5a6bf77..b7307dffeb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala @@ -17,7 +17,9 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[ProductId, Row] @@ -47,5 +49,48 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala index 9310abdbfc..f7990f4179 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pr.p", PViewFields, PViewRow.rowParser) + SelectBuilderSql("pr.p", PViewFields.structure, PViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PViewRow] = { SQL"""select "id", "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala deleted file mode 100644 index b249873603..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala +++ /dev/null @@ -1,60 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala index f9a40218a3..72d5f4b748 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PcViewFields[Row] { val id: Field[ProductcategoryId, Row] @@ -20,5 +22,27 @@ trait PcViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PcViewFields extends PcViewStructure[PcViewRow](None, identity, (_, x) => x) +object PcViewFields { + val structure: Relation[PcViewFields, PcViewRow, PcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) + extends Relation[PcViewFields, PcViewRow, Row] { + + override val fields: PcViewFields[Row] = new PcViewFields[Row] { + override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala index b51f9a699f..2e917c273b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PcViewRepoImpl extends PcViewRepo { override def select: SelectBuilder[PcViewFields, PcViewRow] = { - SelectBuilderSql("pr.pc", PcViewFields, PcViewRow.rowParser) + SelectBuilderSql("pr.pc", PcViewFields.structure, PcViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PcViewRow] = { SQL"""select "id", "productcategoryid", "name", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala deleted file mode 100644 index 8e7f82241e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PcViewStructure[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) - extends Relation[PcViewFields, PcViewRow, Row] - with PcViewFields[Row] { outer => - - override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): PcViewStructure[NewRow] = - new PcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala index 01456464b1..5daae96509 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala @@ -10,7 +10,9 @@ package pch import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PchViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PchViewFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PchViewFields extends PchViewStructure[PchViewRow](None, identity, (_, x) => x) +object PchViewFields { + val structure: Relation[PchViewFields, PchViewRow, PchViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) + extends Relation[PchViewFields, PchViewRow, Row] { + + override val fields: PchViewFields[Row] = new PchViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala index d0527eb495..178c512921 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PchViewRepoImpl extends PchViewRepo { override def select: SelectBuilder[PchViewFields, PchViewRow] = { - SelectBuilderSql("pr.pch", PchViewFields, PchViewRow.rowParser) + SelectBuilderSql("pr.pch", PchViewFields.structure, PchViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PchViewRow] = { SQL"""select "id", "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala deleted file mode 100644 index 6d321e3d13..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pch - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PchViewStructure[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) - extends Relation[PchViewFields, PchViewRow, Row] - with PchViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): PchViewStructure[NewRow] = - new PchViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala index 19d97f3f8f..ee50049fa8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.production.productdescription.ProductdescriptionId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdViewFields[Row] { val id: Field[ProductdescriptionId, Row] @@ -19,5 +21,27 @@ trait PdViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PdViewFields extends PdViewStructure[PdViewRow](None, identity, (_, x) => x) +object PdViewFields { + val structure: Relation[PdViewFields, PdViewRow, PdViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) + extends Relation[PdViewFields, PdViewRow, Row] { + + override val fields: PdViewFields[Row] = new PdViewFields[Row] { + override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala index 672fff8663..ae2d968fb5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PdViewRepoImpl extends PdViewRepo { override def select: SelectBuilder[PdViewFields, PdViewRow] = { - SelectBuilderSql("pr.pd", PdViewFields, PdViewRow.rowParser) + SelectBuilderSql("pr.pd", PdViewFields.structure, PdViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PdViewRow] = { SQL"""select "id", "productdescriptionid", "description", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala deleted file mode 100644 index a98b8bb146..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pd - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productdescription.ProductdescriptionId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdViewStructure[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) - extends Relation[PdViewFields, PdViewRow, Row] - with PdViewFields[Row] { outer => - - override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): PdViewStructure[NewRow] = - new PdViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala index 25cb9b3ba6..740d21033b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdocViewFields[Row] { val id: Field[ProductId, Row] @@ -18,5 +20,26 @@ trait PdocViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object PdocViewFields extends PdocViewStructure[PdocViewRow](None, identity, (_, x) => x) +object PdocViewFields { + val structure: Relation[PdocViewFields, PdocViewRow, PdocViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) + extends Relation[PdocViewFields, PdocViewRow, Row] { + + override val fields: PdocViewFields[Row] = new PdocViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala index 253ef2359c..fb391cef27 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PdocViewRepoImpl extends PdocViewRepo { override def select: SelectBuilder[PdocViewFields, PdocViewRow] = { - SelectBuilderSql("pr.pdoc", PdocViewFields, PdocViewRow.rowParser) + SelectBuilderSql("pr.pdoc", PdocViewFields.structure, PdocViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PdocViewRow] = { SQL"""select "id", "productid", "modifieddate"::text, "documentnode" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala deleted file mode 100644 index 6769d2541e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pdoc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdocViewStructure[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) - extends Relation[PdocViewFields, PdocViewRow, Row] - with PdocViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): PdocViewStructure[NewRow] = - new PdocViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala index 5a54d4bb67..e98fe4de3e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PiViewFields[Row] { val id: Field[ProductId, Row] @@ -24,5 +26,30 @@ trait PiViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PiViewFields extends PiViewStructure[PiViewRow](None, identity, (_, x) => x) +object PiViewFields { + val structure: Relation[PiViewFields, PiViewRow, PiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) + extends Relation[PiViewFields, PiViewRow, Row] { + + override val fields: PiViewFields[Row] = new PiViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala index 3215978d8c..99699b8e37 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PiViewRepoImpl extends PiViewRepo { override def select: SelectBuilder[PiViewFields, PiViewRow] = { - SelectBuilderSql("pr.pi", PiViewFields, PiViewRow.rowParser) + SelectBuilderSql("pr.pi", PiViewFields.structure, PiViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PiViewRow] = { SQL"""select "id", "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala deleted file mode 100644 index dcebe88794..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PiViewStructure[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) - extends Relation[PiViewFields, PiViewRow, Row] - with PiViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): PiViewStructure[NewRow] = - new PiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala index f43dea551c..496c9967ca 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala @@ -10,7 +10,9 @@ package plph import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PlphViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PlphViewFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PlphViewFields extends PlphViewStructure[PlphViewRow](None, identity, (_, x) => x) +object PlphViewFields { + val structure: Relation[PlphViewFields, PlphViewRow, PlphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) + extends Relation[PlphViewFields, PlphViewRow, Row] { + + override val fields: PlphViewFields[Row] = new PlphViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala index 9afa184f5a..5e7b0e9e30 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PlphViewRepoImpl extends PlphViewRepo { override def select: SelectBuilder[PlphViewFields, PlphViewRow] = { - SelectBuilderSql("pr.plph", PlphViewFields, PlphViewRow.rowParser) + SelectBuilderSql("pr.plph", PlphViewFields.structure, PlphViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PlphViewRow] = { SQL"""select "id", "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala deleted file mode 100644 index feed6246a5..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package plph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PlphViewStructure[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) - extends Relation[PlphViewFields, PlphViewRow, Row] - with PlphViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): PlphViewStructure[NewRow] = - new PlphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala index b06665c868..a97787912d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PmViewFields[Row] { val id: Field[ProductmodelId, Row] @@ -24,5 +26,29 @@ trait PmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmViewFields extends PmViewStructure[PmViewRow](None, identity, (_, x) => x) +object PmViewFields { + val structure: Relation[PmViewFields, PmViewRow, PmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) + extends Relation[PmViewFields, PmViewRow, Row] { + + override val fields: PmViewFields[Row] = new PmViewFields[Row] { + override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala index 5db3aefef9..e4c3fbdcea 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PmViewRepoImpl extends PmViewRepo { override def select: SelectBuilder[PmViewFields, PmViewRow] = { - SelectBuilderSql("pr.pm", PmViewFields, PmViewRow.rowParser) + SelectBuilderSql("pr.pm", PmViewFields.structure, PmViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PmViewRow] = { SQL"""select "id", "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala deleted file mode 100644 index 3197df10d2..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PmViewStructure[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) - extends Relation[PmViewFields, PmViewRow, Row] - with PmViewFields[Row] { outer => - - override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): PmViewStructure[NewRow] = - new PmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala index 2d29d5ad64..344c7c720d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmiViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] val illustrationid: Field[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmiViewFields extends PmiViewStructure[PmiViewRow](None, identity, (_, x) => x) +object PmiViewFields { + val structure: Relation[PmiViewFields, PmiViewRow, PmiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) + extends Relation[PmiViewFields, PmiViewRow, Row] { + + override val fields: PmiViewFields[Row] = new PmiViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala index 94c05a4ae8..02c0d1dfe2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PmiViewRepoImpl extends PmiViewRepo { override def select: SelectBuilder[PmiViewFields, PmiViewRow] = { - SelectBuilderSql("pr.pmi", PmiViewFields, PmiViewRow.rowParser) + SelectBuilderSql("pr.pmi", PmiViewFields.structure, PmiViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PmiViewRow] = { SQL"""select "productmodelid", "illustrationid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala deleted file mode 100644 index 03c692bb06..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmiViewStructure[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) - extends Relation[PmiViewFields, PmiViewRow, Row] - with PmiViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): PmiViewStructure[NewRow] = - new PmiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala index ab1d72e3bd..9c803e310c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmpdcViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -19,5 +21,26 @@ trait PmpdcViewFields[Row] { val cultureid: Field[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmpdcViewFields extends PmpdcViewStructure[PmpdcViewRow](None, identity, (_, x) => x) +object PmpdcViewFields { + val structure: Relation[PmpdcViewFields, PmpdcViewRow, PmpdcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) + extends Relation[PmpdcViewFields, PmpdcViewRow, Row] { + + override val fields: PmpdcViewFields[Row] = new PmpdcViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala index e797004e84..df20dd758f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PmpdcViewRepoImpl extends PmpdcViewRepo { override def select: SelectBuilder[PmpdcViewFields, PmpdcViewRow] = { - SelectBuilderSql("pr.pmpdc", PmpdcViewFields, PmpdcViewRow.rowParser) + SelectBuilderSql("pr.pmpdc", PmpdcViewFields.structure, PmpdcViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PmpdcViewRow] = { SQL"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala deleted file mode 100644 index a96593a81b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmpdc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmpdcViewStructure[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) - extends Relation[PmpdcViewFields, PmpdcViewRow, Row] - with PmpdcViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): PmpdcViewStructure[NewRow] = - new PmpdcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala index 50c9cbab5b..73dc761379 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.productphoto.ProductphotoId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[ProductphotoId, Row] @@ -22,5 +24,29 @@ trait PpViewFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala index af49d47cb8..c506df80d1 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pr.pp", PpViewFields, PpViewRow.rowParser) + SelectBuilderSql("pr.pp", PpViewFields.structure, PpViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PpViewRow] = { SQL"""select "id", "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala deleted file mode 100644 index 2d84dc92fc..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pp - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.productphoto.ProductphotoId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala index c7d4a423a0..ecca1a5053 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PppViewFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,26 @@ trait PppViewFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PppViewFields extends PppViewStructure[PppViewRow](None, identity, (_, x) => x) +object PppViewFields { + val structure: Relation[PppViewFields, PppViewRow, PppViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) + extends Relation[PppViewFields, PppViewRow, Row] { + + override val fields: PppViewFields[Row] = new PppViewFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala index fa10d2919b..03b92f059a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PppViewRepoImpl extends PppViewRepo { override def select: SelectBuilder[PppViewFields, PppViewRow] = { - SelectBuilderSql("pr.ppp", PppViewFields, PppViewRow.rowParser) + SelectBuilderSql("pr.ppp", PppViewFields.structure, PppViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PppViewRow] = { SQL"""select "productid", "productphotoid", "primary", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala deleted file mode 100644 index 146a003b99..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package ppp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PppViewStructure[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) - extends Relation[PppViewFields, PppViewRow, Row] - with PppViewFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): PppViewStructure[NewRow] = - new PppViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala index 2114439bc5..89a5e6ac65 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productreview.ProductreviewId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PrViewFields[Row] { val id: Field[ProductreviewId, Row] @@ -25,5 +27,31 @@ trait PrViewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PrViewFields extends PrViewStructure[PrViewRow](None, identity, (_, x) => x) +object PrViewFields { + val structure: Relation[PrViewFields, PrViewRow, PrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) + extends Relation[PrViewFields, PrViewRow, Row] { + + override val fields: PrViewFields[Row] = new PrViewFields[Row] { + override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala index f37ae8a4e6..4914eb23e6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PrViewRepoImpl extends PrViewRepo { override def select: SelectBuilder[PrViewFields, PrViewRow] = { - SelectBuilderSql("pr.pr", PrViewFields, PrViewRow.rowParser) + SelectBuilderSql("pr.pr", PrViewFields.structure, PrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PrViewRow] = { SQL"""select "id", "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala deleted file mode 100644 index f0f8b095c1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productreview.ProductreviewId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PrViewStructure[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) - extends Relation[PrViewFields, PrViewRow, Row] - with PrViewFields[Row] { outer => - - override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): PrViewStructure[NewRow] = - new PrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala index 86ad4f55ca..8ad42b3098 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.production.productcategory.ProductcategoryId import adventureworks.production.productsubcategory.ProductsubcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PscViewFields[Row] { val id: Field[ProductsubcategoryId, Row] @@ -22,5 +24,28 @@ trait PscViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PscViewFields extends PscViewStructure[PscViewRow](None, identity, (_, x) => x) +object PscViewFields { + val structure: Relation[PscViewFields, PscViewRow, PscViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) + extends Relation[PscViewFields, PscViewRow, Row] { + + override val fields: PscViewFields[Row] = new PscViewFields[Row] { + override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala index 8c52045275..1cea97c39c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PscViewRepoImpl extends PscViewRepo { override def select: SelectBuilder[PscViewFields, PscViewRow] = { - SelectBuilderSql("pr.psc", PscViewFields, PscViewRow.rowParser) + SelectBuilderSql("pr.psc", PscViewFields.structure, PscViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PscViewRow] = { SQL"""select "id", "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala deleted file mode 100644 index 136e30a01b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package psc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PscViewStructure[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) - extends Relation[PscViewFields, PscViewRow, Row] - with PscViewFields[Row] { outer => - - override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): PscViewStructure[NewRow] = - new PscViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala index 3e4dca91bd..e1b396328c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[ScrapreasonId, Row] @@ -18,5 +20,26 @@ trait SrViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala index 0bbe78188d..d82e23c5a1 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("pr.sr", SrViewFields, SrViewRow.rowParser) + SelectBuilderSql("pr.sr", SrViewFields.structure, SrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SrViewRow] = { SQL"""select "id", "scrapreasonid", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala deleted file mode 100644 index 9355670f37..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala index ec2fbac470..595df76064 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.production.transactionhistory.TransactionhistoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThViewFields[Row] { val id: Field[TransactionhistoryId, Row] @@ -24,5 +26,32 @@ trait ThViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThViewFields extends ThViewStructure[ThViewRow](None, identity, (_, x) => x) +object ThViewFields { + val structure: Relation[ThViewFields, ThViewRow, ThViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) + extends Relation[ThViewFields, ThViewRow, Row] { + + override val fields: ThViewFields[Row] = new ThViewFields[Row] { + override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala index 827b6456c4..2141ca0898 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class ThViewRepoImpl extends ThViewRepo { override def select: SelectBuilder[ThViewFields, ThViewRow] = { - SelectBuilderSql("pr.th", ThViewFields, ThViewRow.rowParser) + SelectBuilderSql("pr.th", ThViewFields.structure, ThViewRow.rowParser) } override def selectAll(implicit c: Connection): List[ThViewRow] = { SQL"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala deleted file mode 100644 index 715ac72ef2..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package th - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.transactionhistory.TransactionhistoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThViewStructure[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) - extends Relation[ThViewFields, ThViewRow, Row] - with ThViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): ThViewStructure[NewRow] = - new ThViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala index 0e2c704519..d839c3e7f6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala @@ -10,6 +10,8 @@ package tha import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThaViewFields[Row] { val id: Field[TransactionhistoryarchiveId, Row] @@ -23,5 +25,32 @@ trait ThaViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThaViewFields extends ThaViewStructure[ThaViewRow](None, identity, (_, x) => x) +object ThaViewFields { + val structure: Relation[ThaViewFields, ThaViewRow, ThaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) + extends Relation[ThaViewFields, ThaViewRow, Row] { + + override val fields: ThaViewFields[Row] = new ThaViewFields[Row] { + override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala index 64a8de2854..967feb10b9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class ThaViewRepoImpl extends ThaViewRepo { override def select: SelectBuilder[ThaViewFields, ThaViewRow] = { - SelectBuilderSql("pr.tha", ThaViewFields, ThaViewRow.rowParser) + SelectBuilderSql("pr.tha", ThaViewFields.structure, ThaViewRow.rowParser) } override def selectAll(implicit c: Connection): List[ThaViewRow] = { SQL"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala deleted file mode 100644 index 21ed397cc7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package tha - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThaViewStructure[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) - extends Relation[ThaViewFields, ThaViewRow, Row] - with ThaViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): ThaViewStructure[NewRow] = - new ThaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala index b4cd755285..c614cac62f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait UmViewFields[Row] { val id: Field[UnitmeasureId, Row] @@ -18,5 +20,26 @@ trait UmViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UmViewFields extends UmViewStructure[UmViewRow](None, identity, (_, x) => x) +object UmViewFields { + val structure: Relation[UmViewFields, UmViewRow, UmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) + extends Relation[UmViewFields, UmViewRow, Row] { + + override val fields: UmViewFields[Row] = new UmViewFields[Row] { + override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala index 9f04836742..02132a3b81 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class UmViewRepoImpl extends UmViewRepo { override def select: SelectBuilder[UmViewFields, UmViewRow] = { - SelectBuilderSql("pr.um", UmViewFields, UmViewRow.rowParser) + SelectBuilderSql("pr.um", UmViewFields.structure, UmViewRow.rowParser) } override def selectAll(implicit c: Connection): List[UmViewRow] = { SQL"""select "id", "unitmeasurecode", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala deleted file mode 100644 index 8d78e17361..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package um - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class UmViewStructure[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) - extends Relation[UmViewFields, UmViewRow, Row] - with UmViewFields[Row] { outer => - - override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): UmViewStructure[NewRow] = - new UmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala index ea86753bf7..225ac16ca5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WViewFields[Row] { val id: Field[WorkorderId, Row] @@ -27,5 +29,32 @@ trait WViewFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WViewFields extends WViewStructure[WViewRow](None, identity, (_, x) => x) +object WViewFields { + val structure: Relation[WViewFields, WViewRow, WViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) + extends Relation[WViewFields, WViewRow, Row] { + + override val fields: WViewFields[Row] = new WViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala index 1d4e615635..add9e346cc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class WViewRepoImpl extends WViewRepo { override def select: SelectBuilder[WViewFields, WViewRow] = { - SelectBuilderSql("pr.w", WViewFields, WViewRow.rowParser) + SelectBuilderSql("pr.w", WViewFields.structure, WViewRow.rowParser) } override def selectAll(implicit c: Connection): List[WViewRow] = { SQL"""select "id", "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala deleted file mode 100644 index 93b4ed0475..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package w - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WViewStructure[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) - extends Relation[WViewFields, WViewRow, Row] - with WViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): WViewStructure[NewRow] = - new WViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala index 641cbd9976..3d05dacd9d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WrViewFields[Row] { val id: Field[WorkorderId, Row] @@ -29,5 +31,35 @@ trait WrViewFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WrViewFields extends WrViewStructure[WrViewRow](None, identity, (_, x) => x) +object WrViewFields { + val structure: Relation[WrViewFields, WrViewRow, WrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) + extends Relation[WrViewFields, WrViewRow, Row] { + + override val fields: WrViewFields[Row] = new WrViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala index 3be5910c8a..bbe49a3b50 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class WrViewRepoImpl extends WrViewRepo { override def select: SelectBuilder[WrViewFields, WrViewRow] = { - SelectBuilderSql("pr.wr", WrViewFields, WrViewRow.rowParser) + SelectBuilderSql("pr.wr", WrViewFields.structure, WrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[WrViewRow] = { SQL"""select "id", "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala deleted file mode 100644 index 4d1eac32cc..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package wr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WrViewStructure[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) - extends Relation[WrViewFields, WrViewRow, Row] - with WrViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): WrViewStructure[NewRow] = - new WrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala index 5182f7e7aa..9cd859ebed 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BillofmaterialsFields[Row] { val billofmaterialsid: IdField[Int, Row] @@ -26,5 +28,31 @@ trait BillofmaterialsFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BillofmaterialsFields extends BillofmaterialsStructure[BillofmaterialsRow](None, identity, (_, x) => x) +object BillofmaterialsFields { + val structure: Relation[BillofmaterialsFields, BillofmaterialsRow, BillofmaterialsRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) + extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] { + + override val fields: BillofmaterialsFields[Row] = new BillofmaterialsFields[Row] { + override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala index 867f963e53..c2f683ff55 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala @@ -31,7 +31,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { SQL"""delete from production.billofmaterials where "billofmaterialsid" = ${ParameterValue(billofmaterialsid, null, ToStatement.intToStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilder("production.billofmaterials", BillofmaterialsFields) + DeleteBuilder("production.billofmaterials", BillofmaterialsFields.structure) } override def insert(unsaved: BillofmaterialsRow)(implicit c: Connection): BillofmaterialsRow = { SQL"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") @@ -89,7 +89,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { streamingInsert(s"""COPY production.billofmaterials("productassemblyid", "componentid", "enddate", "unitmeasurecode", "bomlevel", "billofmaterialsid", "startdate", "perassemblyqty", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BillofmaterialsRowUnsaved.text, c) } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderSql("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.rowParser) + SelectBuilderSql("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.rowParser) } override def selectAll(implicit c: Connection): List[BillofmaterialsRow] = { SQL"""select "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text @@ -124,7 +124,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilder("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.rowParser) + UpdateBuilder("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.rowParser) } override def upsert(unsaved: BillofmaterialsRow)(implicit c: Connection): BillofmaterialsRow = { SQL"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala index af73f45483..ed840bffac 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala @@ -25,7 +25,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof map.remove(billofmaterialsid).isDefined } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields, map) + DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields.structure.fields, map) } override def insert(unsaved: BillofmaterialsRow)(implicit c: Connection): BillofmaterialsRow = { val _ = if (map.contains(unsaved.billofmaterialsid)) @@ -53,7 +53,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof unsaved.size.toLong } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderMock(BillofmaterialsFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(BillofmaterialsFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[BillofmaterialsRow] = { map.values.toList @@ -74,7 +74,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof } } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields, map) + UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields.structure.fields, map) } override def upsert(unsaved: BillofmaterialsRow)(implicit c: Connection): BillofmaterialsRow = { map.put(unsaved.billofmaterialsid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala deleted file mode 100644 index 60079addb8..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package billofmaterials - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BillofmaterialsStructure[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) - extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] - with BillofmaterialsFields[Row] { outer => - - override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): BillofmaterialsStructure[NewRow] = - new BillofmaterialsStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala index ffaacc2a52..4584e06fdf 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala @@ -10,12 +10,34 @@ package culture import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CultureFields[Row] { val cultureid: IdField[CultureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CultureFields extends CultureStructure[CultureRow](None, identity, (_, x) => x) +object CultureFields { + val structure: Relation[CultureFields, CultureRow, CultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) + extends Relation[CultureFields, CultureRow, Row] { + + override val fields: CultureFields[Row] = new CultureFields[Row] { + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala index e12fd05e39..c1f6d67c72 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala @@ -28,7 +28,7 @@ class CultureRepoImpl extends CultureRepo { SQL"""delete from production.culture where "cultureid" = ${ParameterValue(cultureid, null, CultureId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilder("production.culture", CultureFields) + DeleteBuilder("production.culture", CultureFields.structure) } override def insert(unsaved: CultureRow)(implicit c: Connection): CultureRow = { SQL"""insert into production.culture("cultureid", "name", "modifieddate") @@ -71,7 +71,7 @@ class CultureRepoImpl extends CultureRepo { streamingInsert(s"""COPY production.culture("cultureid", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CultureRowUnsaved.text, c) } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderSql("production.culture", CultureFields, CultureRow.rowParser) + SelectBuilderSql("production.culture", CultureFields.structure, CultureRow.rowParser) } override def selectAll(implicit c: Connection): List[CultureRow] = { SQL"""select "cultureid", "name", "modifieddate"::text @@ -100,7 +100,7 @@ class CultureRepoImpl extends CultureRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilder("production.culture", CultureFields, CultureRow.rowParser) + UpdateBuilder("production.culture", CultureFields.structure, CultureRow.rowParser) } override def upsert(unsaved: CultureRow)(implicit c: Connection): CultureRow = { SQL"""insert into production.culture("cultureid", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala index da3411a832..883f071185 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala @@ -25,7 +25,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], map.remove(cultureid).isDefined } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilderMock(DeleteParams.empty, CultureFields, map) + DeleteBuilderMock(DeleteParams.empty, CultureFields.structure.fields, map) } override def insert(unsaved: CultureRow)(implicit c: Connection): CultureRow = { val _ = if (map.contains(unsaved.cultureid)) @@ -53,7 +53,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], unsaved.size.toLong } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderMock(CultureFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CultureFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CultureRow] = { map.values.toList @@ -74,7 +74,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], } } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilderMock(UpdateParams.empty, CultureFields, map) + UpdateBuilderMock(UpdateParams.empty, CultureFields.structure.fields, map) } override def upsert(unsaved: CultureRow)(implicit c: Connection): CultureRow = { map.put(unsaved.cultureid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala deleted file mode 100644 index 6267bec327..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package culture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CultureStructure[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) - extends Relation[CultureFields, CultureRow, Row] - with CultureFields[Row] { outer => - - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): CultureStructure[NewRow] = - new CultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala index 1731128fa6..0a3da82b3c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DocumentFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DocumentFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object DocumentFields extends DocumentStructure[DocumentRow](None, identity, (_, x) => x) +object DocumentFields { + val structure: Relation[DocumentFields, DocumentRow, DocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) + extends Relation[DocumentFields, DocumentRow, Row] { + + override val fields: DocumentFields[Row] = new DocumentFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala index 9c6fb0bac6..3e83bbc71a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala @@ -34,7 +34,7 @@ class DocumentRepoImpl extends DocumentRepo { SQL"""delete from production.document where "documentnode" = ${ParameterValue(documentnode, null, DocumentId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilder("production.document", DocumentFields) + DeleteBuilder("production.document", DocumentFields.structure) } override def insert(unsaved: DocumentRow)(implicit c: Connection): DocumentRow = { SQL"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") @@ -99,7 +99,7 @@ class DocumentRepoImpl extends DocumentRepo { streamingInsert(s"""COPY production.document("title", "owner", "filename", "fileextension", "revision", "status", "documentsummary", "document", "folderflag", "changenumber", "rowguid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(DocumentRowUnsaved.text, c) } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderSql("production.document", DocumentFields, DocumentRow.rowParser) + SelectBuilderSql("production.document", DocumentFields.structure, DocumentRow.rowParser) } override def selectAll(implicit c: Connection): List[DocumentRow] = { SQL"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" @@ -145,7 +145,7 @@ class DocumentRepoImpl extends DocumentRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilder("production.document", DocumentFields, DocumentRow.rowParser) + UpdateBuilder("production.document", DocumentFields.structure, DocumentRow.rowParser) } override def upsert(unsaved: DocumentRow)(implicit c: Connection): DocumentRow = { SQL"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala index 1cc37f440f..b8ecd35c07 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala @@ -26,7 +26,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], map.remove(documentnode).isDefined } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, DocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, DocumentFields.structure.fields, map) } override def insert(unsaved: DocumentRow)(implicit c: Connection): DocumentRow = { val _ = if (map.contains(unsaved.documentnode)) @@ -54,7 +54,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], unsaved.size.toLong } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderMock(DocumentFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(DocumentFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[DocumentRow] = { map.values.toList @@ -78,7 +78,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], } } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, DocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, DocumentFields.structure.fields, map) } override def upsert(unsaved: DocumentRow)(implicit c: Connection): DocumentRow = { map.put(unsaved.documentnode, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala deleted file mode 100644 index 2f58d1e1d0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package document - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DocumentStructure[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) - extends Relation[DocumentFields, DocumentRow, Row] - with DocumentFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): DocumentStructure[NewRow] = - new DocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala index 7c45043058..abe779001b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala @@ -10,13 +10,35 @@ package illustration import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IllustrationFields[Row] { val illustrationid: IdField[IllustrationId, Row] val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IllustrationFields extends IllustrationStructure[IllustrationRow](None, identity, (_, x) => x) +object IllustrationFields { + val structure: Relation[IllustrationFields, IllustrationRow, IllustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) + extends Relation[IllustrationFields, IllustrationRow, Row] { + + override val fields: IllustrationFields[Row] = new IllustrationFields[Row] { + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala index d398a04ab4..b70970ef5f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala @@ -29,7 +29,7 @@ class IllustrationRepoImpl extends IllustrationRepo { SQL"""delete from production.illustration where "illustrationid" = ${ParameterValue(illustrationid, null, IllustrationId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilder("production.illustration", IllustrationFields) + DeleteBuilder("production.illustration", IllustrationFields.structure) } override def insert(unsaved: IllustrationRow)(implicit c: Connection): IllustrationRow = { SQL"""insert into production.illustration("illustrationid", "diagram", "modifieddate") @@ -75,7 +75,7 @@ class IllustrationRepoImpl extends IllustrationRepo { streamingInsert(s"""COPY production.illustration("diagram", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(IllustrationRowUnsaved.text, c) } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderSql("production.illustration", IllustrationFields, IllustrationRow.rowParser) + SelectBuilderSql("production.illustration", IllustrationFields.structure, IllustrationRow.rowParser) } override def selectAll(implicit c: Connection): List[IllustrationRow] = { SQL"""select "illustrationid", "diagram", "modifieddate"::text @@ -104,7 +104,7 @@ class IllustrationRepoImpl extends IllustrationRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilder("production.illustration", IllustrationFields, IllustrationRow.rowParser) + UpdateBuilder("production.illustration", IllustrationFields.structure, IllustrationRow.rowParser) } override def upsert(unsaved: IllustrationRow)(implicit c: Connection): IllustrationRow = { SQL"""insert into production.illustration("illustrationid", "diagram", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala index 1868253b7a..4fd92299bf 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala @@ -25,7 +25,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration map.remove(illustrationid).isDefined } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, IllustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, IllustrationFields.structure.fields, map) } override def insert(unsaved: IllustrationRow)(implicit c: Connection): IllustrationRow = { val _ = if (map.contains(unsaved.illustrationid)) @@ -53,7 +53,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration unsaved.size.toLong } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderMock(IllustrationFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(IllustrationFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[IllustrationRow] = { map.values.toList @@ -74,7 +74,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration } } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, IllustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, IllustrationFields.structure.fields, map) } override def upsert(unsaved: IllustrationRow)(implicit c: Connection): IllustrationRow = { map.put(unsaved.illustrationid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala deleted file mode 100644 index 9258b270be..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package illustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IllustrationStructure[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) - extends Relation[IllustrationFields, IllustrationRow, Row] - with IllustrationFields[Row] { outer => - - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): IllustrationStructure[NewRow] = - new IllustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationFields.scala index 447ab8fcfd..d18037c0ce 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationFields.scala @@ -10,7 +10,9 @@ package location import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait LocationFields[Row] { val locationid: IdField[LocationId, Row] @@ -19,5 +21,27 @@ trait LocationFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LocationFields extends LocationStructure[LocationRow](None, identity, (_, x) => x) +object LocationFields { + val structure: Relation[LocationFields, LocationRow, LocationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) + extends Relation[LocationFields, LocationRow, Row] { + + override val fields: LocationFields[Row] = new LocationFields[Row] { + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala index a98c9568ff..762613c454 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala @@ -29,7 +29,7 @@ class LocationRepoImpl extends LocationRepo { SQL"""delete from production.location where "locationid" = ${ParameterValue(locationid, null, LocationId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilder("production.location", LocationFields) + DeleteBuilder("production.location", LocationFields.structure) } override def insert(unsaved: LocationRow)(implicit c: Connection): LocationRow = { SQL"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") @@ -83,7 +83,7 @@ class LocationRepoImpl extends LocationRepo { streamingInsert(s"""COPY production.location("name", "locationid", "costrate", "availability", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(LocationRowUnsaved.text, c) } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderSql("production.location", LocationFields, LocationRow.rowParser) + SelectBuilderSql("production.location", LocationFields.structure, LocationRow.rowParser) } override def selectAll(implicit c: Connection): List[LocationRow] = { SQL"""select "locationid", "name", "costrate", "availability", "modifieddate"::text @@ -114,7 +114,7 @@ class LocationRepoImpl extends LocationRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilder("production.location", LocationFields, LocationRow.rowParser) + UpdateBuilder("production.location", LocationFields.structure, LocationRow.rowParser) } override def upsert(unsaved: LocationRow)(implicit c: Connection): LocationRow = { SQL"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala index 5df459da35..0011628caf 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala @@ -25,7 +25,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], map.remove(locationid).isDefined } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilderMock(DeleteParams.empty, LocationFields, map) + DeleteBuilderMock(DeleteParams.empty, LocationFields.structure.fields, map) } override def insert(unsaved: LocationRow)(implicit c: Connection): LocationRow = { val _ = if (map.contains(unsaved.locationid)) @@ -53,7 +53,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], unsaved.size.toLong } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderMock(LocationFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(LocationFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[LocationRow] = { map.values.toList @@ -74,7 +74,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], } } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilderMock(UpdateParams.empty, LocationFields, map) + UpdateBuilderMock(UpdateParams.empty, LocationFields.structure.fields, map) } override def upsert(unsaved: LocationRow)(implicit c: Connection): LocationRow = { map.put(unsaved.locationid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala deleted file mode 100644 index 09cb5efc34..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package location - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class LocationStructure[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) - extends Relation[LocationFields, LocationRow, Row] - with LocationFields[Row] { outer => - - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): LocationStructure[NewRow] = - new LocationStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductFields.scala index 1a5d92a40f..c57ee41926 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductFields.scala @@ -16,8 +16,10 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductFields[Row] { val productid: IdField[ProductId, Row] @@ -46,5 +48,47 @@ trait ProductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductFields extends ProductStructure[ProductRow](None, identity, (_, x) => x) +object ProductFields { + val structure: Relation[ProductFields, ProductRow, ProductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) + extends Relation[ProductFields, ProductRow, Row] { + + override val fields: ProductFields[Row] = new ProductFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala index 158296ad17..bd236c5bc6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala @@ -36,7 +36,7 @@ class ProductRepoImpl extends ProductRepo { SQL"""delete from production.product where "productid" = ${ParameterValue(productid, null, ProductId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilder("production.product", ProductFields) + DeleteBuilder("production.product", ProductFields.structure) } override def insert(unsaved: ProductRow)(implicit c: Connection): ProductRow = { SQL"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") @@ -113,7 +113,7 @@ class ProductRepoImpl extends ProductRepo { streamingInsert(s"""COPY production.product("name", "productnumber", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "productid", "makeflag", "finishedgoodsflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductRowUnsaved.text, c) } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderSql("production.product", ProductFields, ProductRow.rowParser) + SelectBuilderSql("production.product", ProductFields.structure, ProductRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductRow] = { SQL"""select "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text @@ -164,7 +164,7 @@ class ProductRepoImpl extends ProductRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilder("production.product", ProductFields, ProductRow.rowParser) + UpdateBuilder("production.product", ProductFields.structure, ProductRow.rowParser) } override def upsert(unsaved: ProductRow)(implicit c: Connection): ProductRow = { SQL"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala index 31f6e4be97..07e867f066 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala @@ -25,7 +25,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], map.remove(productid).isDefined } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductFields.structure.fields, map) } override def insert(unsaved: ProductRow)(implicit c: Connection): ProductRow = { val _ = if (map.contains(unsaved.productid)) @@ -53,7 +53,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], unsaved.size.toLong } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderMock(ProductFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], } } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductFields.structure.fields, map) } override def upsert(unsaved: ProductRow)(implicit c: Connection): ProductRow = { map.put(unsaved.productid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala deleted file mode 100644 index 76c4f296d7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala +++ /dev/null @@ -1,59 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package product - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductStructure[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) - extends Relation[ProductFields, ProductRow, Row] - with ProductFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): ProductStructure[NewRow] = - new ProductStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala index d0503b3cac..2d59346265 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductcategoryFields[Row] { val productcategoryid: IdField[ProductcategoryId, Row] @@ -19,5 +21,26 @@ trait ProductcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcategoryFields extends ProductcategoryStructure[ProductcategoryRow](None, identity, (_, x) => x) +object ProductcategoryFields { + val structure: Relation[ProductcategoryFields, ProductcategoryRow, ProductcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) + extends Relation[ProductcategoryFields, ProductcategoryRow, Row] { + + override val fields: ProductcategoryFields[Row] = new ProductcategoryFields[Row] { + override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala index 3edd0313f2..9bbfa53488 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { SQL"""delete from production.productcategory where "productcategoryid" = ${ParameterValue(productcategoryid, null, ProductcategoryId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilder("production.productcategory", ProductcategoryFields) + DeleteBuilder("production.productcategory", ProductcategoryFields.structure) } override def insert(unsaved: ProductcategoryRow)(implicit c: Connection): ProductcategoryRow = { SQL"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") @@ -79,7 +79,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { streamingInsert(s"""COPY production.productcategory("name", "productcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductcategoryRowUnsaved.text, c) } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderSql("production.productcategory", ProductcategoryFields, ProductcategoryRow.rowParser) + SelectBuilderSql("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductcategoryRow] = { SQL"""select "productcategoryid", "name", "rowguid", "modifieddate"::text @@ -109,7 +109,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilder("production.productcategory", ProductcategoryFields, ProductcategoryRow.rowParser) + UpdateBuilder("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.rowParser) } override def upsert(unsaved: ProductcategoryRow)(implicit c: Connection): ProductcategoryRow = { SQL"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala index da81fc19fb..6554027b74 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala @@ -25,7 +25,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc map.remove(productcategoryid).isDefined } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields.structure.fields, map) } override def insert(unsaved: ProductcategoryRow)(implicit c: Connection): ProductcategoryRow = { val _ = if (map.contains(unsaved.productcategoryid)) @@ -53,7 +53,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc unsaved.size.toLong } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderMock(ProductcategoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductcategoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductcategoryRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc } } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductcategoryRow)(implicit c: Connection): ProductcategoryRow = { map.put(unsaved.productcategoryid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala deleted file mode 100644 index 64c9e81a9e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) - extends Relation[ProductcategoryFields, ProductcategoryRow, Row] - with ProductcategoryFields[Row] { outer => - - override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): ProductcategoryStructure[NewRow] = - new ProductcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala index cf5ff0d103..0da0e973da 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala @@ -10,8 +10,10 @@ package productcosthistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductcosthistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductcosthistoryFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcosthistoryFields extends ProductcosthistoryStructure[ProductcosthistoryRow](None, identity, (_, x) => x) +object ProductcosthistoryFields { + val structure: Relation[ProductcosthistoryFields, ProductcosthistoryRow, ProductcosthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) + extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] { + + override val fields: ProductcosthistoryFields[Row] = new ProductcosthistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala index 7e274454ef..7417fdc2b3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { SQL"""delete from production.productcosthistory where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "startdate" = ${ParameterValue(compositeId.startdate, null, TypoLocalDateTime.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilder("production.productcosthistory", ProductcosthistoryFields) + DeleteBuilder("production.productcosthistory", ProductcosthistoryFields.structure) } override def insert(unsaved: ProductcosthistoryRow)(implicit c: Connection): ProductcosthistoryRow = { SQL"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") @@ -74,7 +74,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { streamingInsert(s"""COPY production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductcosthistoryRowUnsaved.text, c) } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.rowParser) + SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductcosthistoryRow] = { SQL"""select "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text @@ -97,7 +97,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilder("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.rowParser) + UpdateBuilder("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.rowParser) } override def upsert(unsaved: ProductcosthistoryRow)(implicit c: Connection): ProductcosthistoryRow = { SQL"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala index 1855d70d35..b06b3ec5bb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala @@ -25,7 +25,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields.structure.fields, map) } override def insert(unsaved: ProductcosthistoryRow)(implicit c: Connection): ProductcosthistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, unsaved.size.toLong } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderMock(ProductcosthistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductcosthistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductcosthistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, } } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields.structure.fields, map) } override def upsert(unsaved: ProductcosthistoryRow)(implicit c: Connection): ProductcosthistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala deleted file mode 100644 index 3ea558bcaa..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcosthistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductcosthistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) - extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] - with ProductcosthistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): ProductcosthistoryStructure[NewRow] = - new ProductcosthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala index e1a2b59269..75a2e533ca 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala @@ -10,7 +10,9 @@ package productdescription import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdescriptionFields[Row] { val productdescriptionid: IdField[ProductdescriptionId, Row] @@ -18,5 +20,26 @@ trait ProductdescriptionFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductdescriptionFields extends ProductdescriptionStructure[ProductdescriptionRow](None, identity, (_, x) => x) +object ProductdescriptionFields { + val structure: Relation[ProductdescriptionFields, ProductdescriptionRow, ProductdescriptionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) + extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] { + + override val fields: ProductdescriptionFields[Row] = new ProductdescriptionFields[Row] { + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala index d84e4f498f..55a585a3c9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala @@ -29,7 +29,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { SQL"""delete from production.productdescription where "productdescriptionid" = ${ParameterValue(productdescriptionid, null, ProductdescriptionId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilder("production.productdescription", ProductdescriptionFields) + DeleteBuilder("production.productdescription", ProductdescriptionFields.structure) } override def insert(unsaved: ProductdescriptionRow)(implicit c: Connection): ProductdescriptionRow = { SQL"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") @@ -79,7 +79,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { streamingInsert(s"""COPY production.productdescription("description", "productdescriptionid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductdescriptionRowUnsaved.text, c) } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderSql("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.rowParser) + SelectBuilderSql("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductdescriptionRow] = { SQL"""select "productdescriptionid", "description", "rowguid", "modifieddate"::text @@ -109,7 +109,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilder("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.rowParser) + UpdateBuilder("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.rowParser) } override def upsert(unsaved: ProductdescriptionRow)(implicit c: Connection): ProductdescriptionRow = { SQL"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala index b42c4de1e0..2c6d8da5c6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala @@ -25,7 +25,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, map.remove(productdescriptionid).isDefined } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields.structure.fields, map) } override def insert(unsaved: ProductdescriptionRow)(implicit c: Connection): ProductdescriptionRow = { val _ = if (map.contains(unsaved.productdescriptionid)) @@ -53,7 +53,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, unsaved.size.toLong } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderMock(ProductdescriptionFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductdescriptionFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductdescriptionRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, } } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields.structure.fields, map) } override def upsert(unsaved: ProductdescriptionRow)(implicit c: Connection): ProductdescriptionRow = { map.put(unsaved.productdescriptionid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala deleted file mode 100644 index fa0869f21a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdescriptionStructure[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) - extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] - with ProductdescriptionFields[Row] { outer => - - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): ProductdescriptionStructure[NewRow] = - new ProductdescriptionStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala index 2f7d55f952..58a368403e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdocumentFields[Row] { val productid: IdField[ProductId, Row] val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object ProductdocumentFields extends ProductdocumentStructure[ProductdocumentRow](None, identity, (_, x) => x) +object ProductdocumentFields { + val structure: Relation[ProductdocumentFields, ProductdocumentRow, ProductdocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) + extends Relation[ProductdocumentFields, ProductdocumentRow, Row] { + + override val fields: ProductdocumentFields[Row] = new ProductdocumentFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala index 3397aef8ad..4357b88062 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala @@ -29,7 +29,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { SQL"""delete from production.productdocument where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "documentnode" = ${ParameterValue(compositeId.documentnode, null, DocumentId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilder("production.productdocument", ProductdocumentFields) + DeleteBuilder("production.productdocument", ProductdocumentFields.structure) } override def insert(unsaved: ProductdocumentRow)(implicit c: Connection): ProductdocumentRow = { SQL"""insert into production.productdocument("productid", "modifieddate", "documentnode") @@ -75,7 +75,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { streamingInsert(s"""COPY production.productdocument("productid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductdocumentRowUnsaved.text, c) } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderSql("production.productdocument", ProductdocumentFields, ProductdocumentRow.rowParser) + SelectBuilderSql("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductdocumentRow] = { SQL"""select "productid", "modifieddate"::text, "documentnode" @@ -96,7 +96,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilder("production.productdocument", ProductdocumentFields, ProductdocumentRow.rowParser) + UpdateBuilder("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.rowParser) } override def upsert(unsaved: ProductdocumentRow)(implicit c: Connection): ProductdocumentRow = { SQL"""insert into production.productdocument("productid", "modifieddate", "documentnode") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala index 1e758c18ad..880c2364b2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala @@ -25,7 +25,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields.structure.fields, map) } override def insert(unsaved: ProductdocumentRow)(implicit c: Connection): ProductdocumentRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc unsaved.size.toLong } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderMock(ProductdocumentFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductdocumentFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductdocumentRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc } } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields.structure.fields, map) } override def upsert(unsaved: ProductdocumentRow)(implicit c: Connection): ProductdocumentRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala deleted file mode 100644 index 552a4d3bd0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdocument - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdocumentStructure[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) - extends Relation[ProductdocumentFields, ProductdocumentRow, Row] - with ProductdocumentFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): ProductdocumentStructure[NewRow] = - new ProductdocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala index c295edd540..e3d41dae02 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductinventoryFields[Row] { val productid: IdField[ProductId, Row] @@ -24,5 +26,29 @@ trait ProductinventoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductinventoryFields extends ProductinventoryStructure[ProductinventoryRow](None, identity, (_, x) => x) +object ProductinventoryFields { + val structure: Relation[ProductinventoryFields, ProductinventoryRow, ProductinventoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) + extends Relation[ProductinventoryFields, ProductinventoryRow, Row] { + + override val fields: ProductinventoryFields[Row] = new ProductinventoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala index 3a25db9bbc..7293db40f8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala @@ -32,7 +32,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { SQL"""delete from production.productinventory where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "locationid" = ${ParameterValue(compositeId.locationid, null, LocationId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilder("production.productinventory", ProductinventoryFields) + DeleteBuilder("production.productinventory", ProductinventoryFields.structure) } override def insert(unsaved: ProductinventoryRow)(implicit c: Connection): ProductinventoryRow = { SQL"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") @@ -85,7 +85,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { streamingInsert(s"""COPY production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductinventoryRowUnsaved.text, c) } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderSql("production.productinventory", ProductinventoryFields, ProductinventoryRow.rowParser) + SelectBuilderSql("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductinventoryRow] = { SQL"""select "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text @@ -110,7 +110,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilder("production.productinventory", ProductinventoryFields, ProductinventoryRow.rowParser) + UpdateBuilder("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.rowParser) } override def upsert(unsaved: ProductinventoryRow)(implicit c: Connection): ProductinventoryRow = { SQL"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala index b10c24efd8..77fc5fa19c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala @@ -25,7 +25,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields.structure.fields, map) } override def insert(unsaved: ProductinventoryRow)(implicit c: Connection): ProductinventoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod unsaved.size.toLong } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderMock(ProductinventoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductinventoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductinventoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod } } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields.structure.fields, map) } override def upsert(unsaved: ProductinventoryRow)(implicit c: Connection): ProductinventoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala deleted file mode 100644 index d900c732e0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productinventory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductinventoryStructure[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) - extends Relation[ProductinventoryFields, ProductinventoryRow, Row] - with ProductinventoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): ProductinventoryStructure[NewRow] = - new ProductinventoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala index 260089c642..3e7f682a75 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala @@ -10,8 +10,10 @@ package productlistpricehistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductlistpricehistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductlistpricehistoryFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductlistpricehistoryFields extends ProductlistpricehistoryStructure[ProductlistpricehistoryRow](None, identity, (_, x) => x) +object ProductlistpricehistoryFields { + val structure: Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, ProductlistpricehistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) + extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] { + + override val fields: ProductlistpricehistoryFields[Row] = new ProductlistpricehistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala index e05c0df046..d05a6ddcec 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { SQL"""delete from production.productlistpricehistory where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "startdate" = ${ParameterValue(compositeId.startdate, null, TypoLocalDateTime.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields) + DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure) } override def insert(unsaved: ProductlistpricehistoryRow)(implicit c: Connection): ProductlistpricehistoryRow = { SQL"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") @@ -74,7 +74,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { streamingInsert(s"""COPY production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductlistpricehistoryRowUnsaved.text, c) } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.rowParser) + SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductlistpricehistoryRow] = { SQL"""select "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text @@ -97,7 +97,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.rowParser) + UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.rowParser) } override def upsert(unsaved: ProductlistpricehistoryRow)(implicit c: Connection): ProductlistpricehistoryRow = { SQL"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala index f42299675d..521fc1f3d2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala @@ -25,7 +25,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def insert(unsaved: ProductlistpricehistoryRow)(implicit c: Connection): ProductlistpricehistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo unsaved.size.toLong } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderMock(ProductlistpricehistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductlistpricehistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductlistpricehistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo } } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def upsert(unsaved: ProductlistpricehistoryRow)(implicit c: Connection): ProductlistpricehistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala deleted file mode 100644 index 042698e344..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productlistpricehistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductlistpricehistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) - extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] - with ProductlistpricehistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): ProductlistpricehistoryStructure[NewRow] = - new ProductlistpricehistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala index 2437f0c667..cb5a586235 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.customtypes.TypoXml import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductmodelFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -23,5 +25,28 @@ trait ProductmodelFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelFields extends ProductmodelStructure[ProductmodelRow](None, identity, (_, x) => x) +object ProductmodelFields { + val structure: Relation[ProductmodelFields, ProductmodelRow, ProductmodelRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) + extends Relation[ProductmodelFields, ProductmodelRow, Row] { + + override val fields: ProductmodelFields[Row] = new ProductmodelFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala index c52844c90d..7c66bdf08d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala @@ -31,7 +31,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { SQL"""delete from production.productmodel where "productmodelid" = ${ParameterValue(productmodelid, null, ProductmodelId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilder("production.productmodel", ProductmodelFields) + DeleteBuilder("production.productmodel", ProductmodelFields.structure) } override def insert(unsaved: ProductmodelRow)(implicit c: Connection): ProductmodelRow = { SQL"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") @@ -83,7 +83,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { streamingInsert(s"""COPY production.productmodel("name", "catalogdescription", "instructions", "productmodelid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelRowUnsaved.text, c) } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderSql("production.productmodel", ProductmodelFields, ProductmodelRow.rowParser) + SelectBuilderSql("production.productmodel", ProductmodelFields.structure, ProductmodelRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductmodelRow] = { SQL"""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text @@ -115,7 +115,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilder("production.productmodel", ProductmodelFields, ProductmodelRow.rowParser) + UpdateBuilder("production.productmodel", ProductmodelFields.structure, ProductmodelRow.rowParser) } override def upsert(unsaved: ProductmodelRow)(implicit c: Connection): ProductmodelRow = { SQL"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala index 84afea0a76..12b8bbd9b6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala @@ -25,7 +25,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel map.remove(productmodelid).isDefined } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelFields.structure.fields, map) } override def insert(unsaved: ProductmodelRow)(implicit c: Connection): ProductmodelRow = { val _ = if (map.contains(unsaved.productmodelid)) @@ -53,7 +53,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel unsaved.size.toLong } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderMock(ProductmodelFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductmodelFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductmodelRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel } } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelFields.structure.fields, map) } override def upsert(unsaved: ProductmodelRow)(implicit c: Connection): ProductmodelRow = { map.put(unsaved.productmodelid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala deleted file mode 100644 index a1285ade93..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodel - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductmodelStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) - extends Relation[ProductmodelFields, ProductmodelRow, Row] - with ProductmodelFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): ProductmodelStructure[NewRow] = - new ProductmodelStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala index dbdfb81ca0..0c238569fc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelillustrationFields[Row] { val productmodelid: IdField[ProductmodelId, Row] val illustrationid: IdField[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelillustrationFields extends ProductmodelillustrationStructure[ProductmodelillustrationRow](None, identity, (_, x) => x) +object ProductmodelillustrationFields { + val structure: Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, ProductmodelillustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) + extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] { + + override val fields: ProductmodelillustrationFields[Row] = new ProductmodelillustrationFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala index ab71d6dba3..57a31f43e9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala @@ -29,7 +29,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { SQL"""delete from production.productmodelillustration where "productmodelid" = ${ParameterValue(compositeId.productmodelid, null, ProductmodelId.toStatement)} AND "illustrationid" = ${ParameterValue(compositeId.illustrationid, null, IllustrationId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields) + DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure) } override def insert(unsaved: ProductmodelillustrationRow)(implicit c: Connection): ProductmodelillustrationRow = { SQL"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") @@ -72,7 +72,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { streamingInsert(s"""COPY production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelillustrationRowUnsaved.text, c) } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.rowParser) + SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductmodelillustrationRow] = { SQL"""select "productmodelid", "illustrationid", "modifieddate"::text @@ -93,7 +93,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.rowParser) + UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.rowParser) } override def upsert(unsaved: ProductmodelillustrationRow)(implicit c: Connection): ProductmodelillustrationRow = { SQL"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala index 32982ce272..03c4aa2712 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala @@ -25,7 +25,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def insert(unsaved: ProductmodelillustrationRow)(implicit c: Connection): ProductmodelillustrationRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration unsaved.size.toLong } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderMock(ProductmodelillustrationFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductmodelillustrationFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductmodelillustrationRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration } } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def upsert(unsaved: ProductmodelillustrationRow)(implicit c: Connection): ProductmodelillustrationRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala deleted file mode 100644 index e5e930457e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelillustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelillustrationStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) - extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] - with ProductmodelillustrationFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): ProductmodelillustrationStructure[NewRow] = - new ProductmodelillustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala index bf16342ec5..52ccc50b47 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelproductdescriptioncultureFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -20,5 +22,26 @@ trait ProductmodelproductdescriptioncultureFields[Row] { val cultureid: IdField[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelproductdescriptioncultureFields extends ProductmodelproductdescriptioncultureStructure[ProductmodelproductdescriptioncultureRow](None, identity, (_, x) => x) +object ProductmodelproductdescriptioncultureFields { + val structure: Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, ProductmodelproductdescriptioncultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) + extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] { + + override val fields: ProductmodelproductdescriptioncultureFields[Row] = new ProductmodelproductdescriptioncultureFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala index bf6701614f..05674b9579 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala @@ -30,7 +30,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd SQL"""delete from production.productmodelproductdescriptionculture where "productmodelid" = ${ParameterValue(compositeId.productmodelid, null, ProductmodelId.toStatement)} AND "productdescriptionid" = ${ParameterValue(compositeId.productdescriptionid, null, ProductdescriptionId.toStatement)} AND "cultureid" = ${ParameterValue(compositeId.cultureid, null, CultureId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields) + DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow)(implicit c: Connection): ProductmodelproductdescriptioncultureRow = { SQL"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") @@ -74,7 +74,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd streamingInsert(s"""COPY production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelproductdescriptioncultureRowUnsaved.text, c) } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.rowParser) + SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductmodelproductdescriptioncultureRow] = { SQL"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text @@ -95,7 +95,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.rowParser) + UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.rowParser) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow)(implicit c: Connection): ProductmodelproductdescriptioncultureRow = { SQL"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala index 63e53767cd..370a18d6eb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala @@ -25,7 +25,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow)(implicit c: Connection): ProductmodelproductdescriptioncultureRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode unsaved.size.toLong } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderMock(ProductmodelproductdescriptioncultureFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductmodelproductdescriptioncultureFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductmodelproductdescriptioncultureRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode } } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow)(implicit c: Connection): ProductmodelproductdescriptioncultureRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala deleted file mode 100644 index 68bba1a170..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelproductdescriptionculture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelproductdescriptioncultureStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) - extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] - with ProductmodelproductdescriptioncultureFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): ProductmodelproductdescriptioncultureStructure[NewRow] = - new ProductmodelproductdescriptioncultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala index 1629445e71..291433253d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala @@ -10,8 +10,10 @@ package productphoto import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductphotoFields[Row] { val productphotoid: IdField[ProductphotoId, Row] @@ -21,5 +23,28 @@ trait ProductphotoFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductphotoFields extends ProductphotoStructure[ProductphotoRow](None, identity, (_, x) => x) +object ProductphotoFields { + val structure: Relation[ProductphotoFields, ProductphotoRow, ProductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) + extends Relation[ProductphotoFields, ProductphotoRow, Row] { + + override val fields: ProductphotoFields[Row] = new ProductphotoFields[Row] { + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala index f26699a016..b0fc415922 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala @@ -30,7 +30,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { SQL"""delete from production.productphoto where "productphotoid" = ${ParameterValue(productphotoid, null, ProductphotoId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilder("production.productphoto", ProductphotoFields) + DeleteBuilder("production.productphoto", ProductphotoFields.structure) } override def insert(unsaved: ProductphotoRow)(implicit c: Connection): ProductphotoRow = { SQL"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") @@ -79,7 +79,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { streamingInsert(s"""COPY production.productphoto("thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "productphotoid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductphotoRowUnsaved.text, c) } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderSql("production.productphoto", ProductphotoFields, ProductphotoRow.rowParser) + SelectBuilderSql("production.productphoto", ProductphotoFields.structure, ProductphotoRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductphotoRow] = { SQL"""select "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text @@ -111,7 +111,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilder("production.productphoto", ProductphotoFields, ProductphotoRow.rowParser) + UpdateBuilder("production.productphoto", ProductphotoFields.structure, ProductphotoRow.rowParser) } override def upsert(unsaved: ProductphotoRow)(implicit c: Connection): ProductphotoRow = { SQL"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala index 9be5c92816..3160fccf32 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala @@ -25,7 +25,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto map.remove(productphotoid).isDefined } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductphotoFields.structure.fields, map) } override def insert(unsaved: ProductphotoRow)(implicit c: Connection): ProductphotoRow = { val _ = if (map.contains(unsaved.productphotoid)) @@ -53,7 +53,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto unsaved.size.toLong } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderMock(ProductphotoFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductphotoFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductphotoRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto } } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductphotoRow)(implicit c: Connection): ProductphotoRow = { map.put(unsaved.productphotoid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala deleted file mode 100644 index 5d6d6be4d0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productphoto - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) - extends Relation[ProductphotoFields, ProductphotoRow, Row] - with ProductphotoFields[Row] { outer => - - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): ProductphotoStructure[NewRow] = - new ProductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala index 4890db8c2f..930619043e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductproductphotoFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,26 @@ trait ProductproductphotoFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductproductphotoFields extends ProductproductphotoStructure[ProductproductphotoRow](None, identity, (_, x) => x) +object ProductproductphotoFields { + val structure: Relation[ProductproductphotoFields, ProductproductphotoRow, ProductproductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) + extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] { + + override val fields: ProductproductphotoFields[Row] = new ProductproductphotoFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala index 2f7ffcba52..5865c9c667 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala @@ -30,7 +30,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { SQL"""delete from production.productproductphoto where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "productphotoid" = ${ParameterValue(compositeId.productphotoid, null, ProductphotoId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilder("production.productproductphoto", ProductproductphotoFields) + DeleteBuilder("production.productproductphoto", ProductproductphotoFields.structure) } override def insert(unsaved: ProductproductphotoRow)(implicit c: Connection): ProductproductphotoRow = { SQL"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") @@ -77,7 +77,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { streamingInsert(s"""COPY production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductproductphotoRowUnsaved.text, c) } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderSql("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.rowParser) + SelectBuilderSql("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductproductphotoRow] = { SQL"""select "productid", "productphotoid", "primary", "modifieddate"::text @@ -99,7 +99,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilder("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.rowParser) + UpdateBuilder("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.rowParser) } override def upsert(unsaved: ProductproductphotoRow)(implicit c: Connection): ProductproductphotoRow = { SQL"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala index b7e1e5c622..899abab773 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala @@ -25,7 +25,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields.structure.fields, map) } override def insert(unsaved: ProductproductphotoRow)(implicit c: Connection): ProductproductphotoRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved unsaved.size.toLong } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderMock(ProductproductphotoFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductproductphotoFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductproductphotoRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved } } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductproductphotoRow)(implicit c: Connection): ProductproductphotoRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala deleted file mode 100644 index 2ddbdadac0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productproductphoto - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductproductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) - extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] - with ProductproductphotoFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): ProductproductphotoStructure[NewRow] = - new ProductproductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala index 7c631f3779..4adead7192 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductreviewFields[Row] { val productreviewid: IdField[ProductreviewId, Row] @@ -24,5 +26,30 @@ trait ProductreviewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductreviewFields extends ProductreviewStructure[ProductreviewRow](None, identity, (_, x) => x) +object ProductreviewFields { + val structure: Relation[ProductreviewFields, ProductreviewRow, ProductreviewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) + extends Relation[ProductreviewFields, ProductreviewRow, Row] { + + override val fields: ProductreviewFields[Row] = new ProductreviewFields[Row] { + override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala index cf9e416c28..3908000d54 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala @@ -31,7 +31,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { SQL"""delete from production.productreview where "productreviewid" = ${ParameterValue(productreviewid, null, ProductreviewId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilder("production.productreview", ProductreviewFields) + DeleteBuilder("production.productreview", ProductreviewFields.structure) } override def insert(unsaved: ProductreviewRow)(implicit c: Connection): ProductreviewRow = { SQL"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") @@ -85,7 +85,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { streamingInsert(s"""COPY production.productreview("productid", "reviewername", "emailaddress", "rating", "comments", "productreviewid", "reviewdate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductreviewRowUnsaved.text, c) } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderSql("production.productreview", ProductreviewFields, ProductreviewRow.rowParser) + SelectBuilderSql("production.productreview", ProductreviewFields.structure, ProductreviewRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductreviewRow] = { SQL"""select "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text @@ -119,7 +119,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilder("production.productreview", ProductreviewFields, ProductreviewRow.rowParser) + UpdateBuilder("production.productreview", ProductreviewFields.structure, ProductreviewRow.rowParser) } override def upsert(unsaved: ProductreviewRow)(implicit c: Connection): ProductreviewRow = { SQL"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala index eeca136af8..4985131d7a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala @@ -25,7 +25,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev map.remove(productreviewid).isDefined } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductreviewFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductreviewFields.structure.fields, map) } override def insert(unsaved: ProductreviewRow)(implicit c: Connection): ProductreviewRow = { val _ = if (map.contains(unsaved.productreviewid)) @@ -53,7 +53,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev unsaved.size.toLong } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderMock(ProductreviewFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductreviewFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductreviewRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev } } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductreviewFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductreviewFields.structure.fields, map) } override def upsert(unsaved: ProductreviewRow)(implicit c: Connection): ProductreviewRow = { map.put(unsaved.productreviewid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala deleted file mode 100644 index e7eca2f48d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productreview - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductreviewStructure[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) - extends Relation[ProductreviewFields, ProductreviewRow, Row] - with ProductreviewFields[Row] { outer => - - override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): ProductreviewStructure[NewRow] = - new ProductreviewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala index 7aaa9eaa8c..023f125696 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductsubcategoryFields[Row] { val productsubcategoryid: IdField[ProductsubcategoryId, Row] @@ -21,5 +23,27 @@ trait ProductsubcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductsubcategoryFields extends ProductsubcategoryStructure[ProductsubcategoryRow](None, identity, (_, x) => x) +object ProductsubcategoryFields { + val structure: Relation[ProductsubcategoryFields, ProductsubcategoryRow, ProductsubcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) + extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] { + + override val fields: ProductsubcategoryFields[Row] = new ProductsubcategoryFields[Row] { + override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala index 66f0895405..0af0d029fb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala @@ -30,7 +30,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { SQL"""delete from production.productsubcategory where "productsubcategoryid" = ${ParameterValue(productsubcategoryid, null, ProductsubcategoryId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilder("production.productsubcategory", ProductsubcategoryFields) + DeleteBuilder("production.productsubcategory", ProductsubcategoryFields.structure) } override def insert(unsaved: ProductsubcategoryRow)(implicit c: Connection): ProductsubcategoryRow = { SQL"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") @@ -81,7 +81,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { streamingInsert(s"""COPY production.productsubcategory("productcategoryid", "name", "productsubcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductsubcategoryRowUnsaved.text, c) } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.rowParser) + SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductsubcategoryRow] = { SQL"""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text @@ -112,7 +112,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilder("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.rowParser) + UpdateBuilder("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.rowParser) } override def upsert(unsaved: ProductsubcategoryRow)(implicit c: Connection): ProductsubcategoryRow = { SQL"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala index 2cf480defd..a5292e76d2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala @@ -25,7 +25,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, map.remove(productsubcategoryid).isDefined } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields.structure.fields, map) } override def insert(unsaved: ProductsubcategoryRow)(implicit c: Connection): ProductsubcategoryRow = { val _ = if (map.contains(unsaved.productsubcategoryid)) @@ -53,7 +53,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, unsaved.size.toLong } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderMock(ProductsubcategoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductsubcategoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductsubcategoryRow] = { map.values.toList @@ -74,7 +74,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, } } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductsubcategoryRow)(implicit c: Connection): ProductsubcategoryRow = { map.put(unsaved.productsubcategoryid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala deleted file mode 100644 index 252d890975..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productsubcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductsubcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) - extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] - with ProductsubcategoryFields[Row] { outer => - - override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): ProductsubcategoryStructure[NewRow] = - new ProductsubcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala index ca072f007e..54c8b879a7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala @@ -10,12 +10,34 @@ package scrapreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ScrapreasonFields[Row] { val scrapreasonid: IdField[ScrapreasonId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ScrapreasonFields extends ScrapreasonStructure[ScrapreasonRow](None, identity, (_, x) => x) +object ScrapreasonFields { + val structure: Relation[ScrapreasonFields, ScrapreasonRow, ScrapreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) + extends Relation[ScrapreasonFields, ScrapreasonRow, Row] { + + override val fields: ScrapreasonFields[Row] = new ScrapreasonFields[Row] { + override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala index 7b322a0b53..ad6d24d3a3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala @@ -28,7 +28,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { SQL"""delete from production.scrapreason where "scrapreasonid" = ${ParameterValue(scrapreasonid, null, ScrapreasonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilder("production.scrapreason", ScrapreasonFields) + DeleteBuilder("production.scrapreason", ScrapreasonFields.structure) } override def insert(unsaved: ScrapreasonRow)(implicit c: Connection): ScrapreasonRow = { SQL"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") @@ -74,7 +74,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { streamingInsert(s"""COPY production.scrapreason("name", "scrapreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ScrapreasonRowUnsaved.text, c) } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderSql("production.scrapreason", ScrapreasonFields, ScrapreasonRow.rowParser) + SelectBuilderSql("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.rowParser) } override def selectAll(implicit c: Connection): List[ScrapreasonRow] = { SQL"""select "scrapreasonid", "name", "modifieddate"::text @@ -103,7 +103,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilder("production.scrapreason", ScrapreasonFields, ScrapreasonRow.rowParser) + UpdateBuilder("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.rowParser) } override def upsert(unsaved: ScrapreasonRow)(implicit c: Connection): ScrapreasonRow = { SQL"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala index e431f41403..4427dde800 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala @@ -25,7 +25,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow map.remove(scrapreasonid).isDefined } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields.structure.fields, map) } override def insert(unsaved: ScrapreasonRow)(implicit c: Connection): ScrapreasonRow = { val _ = if (map.contains(unsaved.scrapreasonid)) @@ -53,7 +53,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow unsaved.size.toLong } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderMock(ScrapreasonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ScrapreasonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ScrapreasonRow] = { map.values.toList @@ -74,7 +74,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow } } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields.structure.fields, map) } override def upsert(unsaved: ScrapreasonRow)(implicit c: Connection): ScrapreasonRow = { map.put(unsaved.scrapreasonid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala deleted file mode 100644 index 9d25018824..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package scrapreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ScrapreasonStructure[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) - extends Relation[ScrapreasonFields, ScrapreasonRow, Row] - with ScrapreasonFields[Row] { outer => - - override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): ScrapreasonStructure[NewRow] = - new ScrapreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala index 9df57dd54b..51414ff76f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala @@ -10,7 +10,9 @@ package transactionhistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryFields[Row] { val transactionid: IdField[TransactionhistoryId, Row] @@ -23,5 +25,31 @@ trait TransactionhistoryFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryFields extends TransactionhistoryStructure[TransactionhistoryRow](None, identity, (_, x) => x) +object TransactionhistoryFields { + val structure: Relation[TransactionhistoryFields, TransactionhistoryRow, TransactionhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) + extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] { + + override val fields: TransactionhistoryFields[Row] = new TransactionhistoryFields[Row] { + override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala index dacced156b..19a168b48b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala @@ -29,7 +29,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { SQL"""delete from production.transactionhistory where "transactionid" = ${ParameterValue(transactionid, null, TransactionhistoryId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilder("production.transactionhistory", TransactionhistoryFields) + DeleteBuilder("production.transactionhistory", TransactionhistoryFields.structure) } override def insert(unsaved: TransactionhistoryRow)(implicit c: Connection): TransactionhistoryRow = { SQL"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -87,7 +87,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { streamingInsert(s"""COPY production.transactionhistory("productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "transactionid", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(TransactionhistoryRowUnsaved.text, c) } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderSql("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.rowParser) + SelectBuilderSql("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[TransactionhistoryRow] = { SQL"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text @@ -122,7 +122,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilder("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.rowParser) + UpdateBuilder("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.rowParser) } override def upsert(unsaved: TransactionhistoryRow)(implicit c: Connection): TransactionhistoryRow = { SQL"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala index 7d3c2ecb03..e32fb2f678 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala @@ -25,7 +25,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, map.remove(transactionid).isDefined } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryRow)(implicit c: Connection): TransactionhistoryRow = { val _ = if (map.contains(unsaved.transactionid)) @@ -53,7 +53,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, unsaved.size.toLong } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderMock(TransactionhistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(TransactionhistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[TransactionhistoryRow] = { map.values.toList @@ -74,7 +74,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, } } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryRow)(implicit c: Connection): TransactionhistoryRow = { map.put(unsaved.transactionid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala deleted file mode 100644 index f404fa5efa..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) - extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] - with TransactionhistoryFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): TransactionhistoryStructure[NewRow] = - new TransactionhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala index 3719c19452..9c35434e94 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala @@ -9,7 +9,9 @@ package transactionhistoryarchive import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryarchiveFields[Row] { val transactionid: IdField[TransactionhistoryarchiveId, Row] @@ -22,5 +24,31 @@ trait TransactionhistoryarchiveFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryarchiveFields extends TransactionhistoryarchiveStructure[TransactionhistoryarchiveRow](None, identity, (_, x) => x) +object TransactionhistoryarchiveFields { + val structure: Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, TransactionhistoryarchiveRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) + extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] { + + override val fields: TransactionhistoryarchiveFields[Row] = new TransactionhistoryarchiveFields[Row] { + override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala index 2eb4269886..f268db82f4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala @@ -28,7 +28,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { SQL"""delete from production.transactionhistoryarchive where "transactionid" = ${ParameterValue(transactionid, null, TransactionhistoryarchiveId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields) + DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure) } override def insert(unsaved: TransactionhistoryarchiveRow)(implicit c: Connection): TransactionhistoryarchiveRow = { SQL"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -83,7 +83,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { streamingInsert(s"""COPY production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(TransactionhistoryarchiveRowUnsaved.text, c) } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.rowParser) + SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.rowParser) } override def selectAll(implicit c: Connection): List[TransactionhistoryarchiveRow] = { SQL"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text @@ -118,7 +118,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.rowParser) + UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.rowParser) } override def upsert(unsaved: TransactionhistoryarchiveRow)(implicit c: Connection): TransactionhistoryarchiveRow = { SQL"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala index b09164e400..3ebe6ab940 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala @@ -25,7 +25,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi map.remove(transactionid).isDefined } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryarchiveRow)(implicit c: Connection): TransactionhistoryarchiveRow = { val _ = if (map.contains(unsaved.transactionid)) @@ -53,7 +53,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi unsaved.size.toLong } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderMock(TransactionhistoryarchiveFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(TransactionhistoryarchiveFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[TransactionhistoryarchiveRow] = { map.values.toList @@ -74,7 +74,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi } } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryarchiveRow)(implicit c: Connection): TransactionhistoryarchiveRow = { map.put(unsaved.transactionid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala deleted file mode 100644 index 48ea814139..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistoryarchive - -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryarchiveStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) - extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] - with TransactionhistoryarchiveFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): TransactionhistoryarchiveStructure[NewRow] = - new TransactionhistoryarchiveStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala index 9f02820d0d..0f7801c2df 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala @@ -10,12 +10,34 @@ package unitmeasure import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait UnitmeasureFields[Row] { val unitmeasurecode: IdField[UnitmeasureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UnitmeasureFields extends UnitmeasureStructure[UnitmeasureRow](None, identity, (_, x) => x) +object UnitmeasureFields { + val structure: Relation[UnitmeasureFields, UnitmeasureRow, UnitmeasureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) + extends Relation[UnitmeasureFields, UnitmeasureRow, Row] { + + override val fields: UnitmeasureFields[Row] = new UnitmeasureFields[Row] { + override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala index 4e965ce7f7..a0eae32cd6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala @@ -28,7 +28,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { SQL"""delete from production.unitmeasure where "unitmeasurecode" = ${ParameterValue(unitmeasurecode, null, UnitmeasureId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilder("production.unitmeasure", UnitmeasureFields) + DeleteBuilder("production.unitmeasure", UnitmeasureFields.structure) } override def insert(unsaved: UnitmeasureRow)(implicit c: Connection): UnitmeasureRow = { SQL"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") @@ -71,7 +71,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { streamingInsert(s"""COPY production.unitmeasure("unitmeasurecode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(UnitmeasureRowUnsaved.text, c) } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderSql("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.rowParser) + SelectBuilderSql("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.rowParser) } override def selectAll(implicit c: Connection): List[UnitmeasureRow] = { SQL"""select "unitmeasurecode", "name", "modifieddate"::text @@ -100,7 +100,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilder("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.rowParser) + UpdateBuilder("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.rowParser) } override def upsert(unsaved: UnitmeasureRow)(implicit c: Connection): UnitmeasureRow = { SQL"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala index ce3f90ad4e..6cdc2cd01f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala @@ -25,7 +25,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow map.remove(unitmeasurecode).isDefined } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields, map) + DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields.structure.fields, map) } override def insert(unsaved: UnitmeasureRow)(implicit c: Connection): UnitmeasureRow = { val _ = if (map.contains(unsaved.unitmeasurecode)) @@ -53,7 +53,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow unsaved.size.toLong } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderMock(UnitmeasureFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(UnitmeasureFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[UnitmeasureRow] = { map.values.toList @@ -74,7 +74,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow } } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields, map) + UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields.structure.fields, map) } override def upsert(unsaved: UnitmeasureRow)(implicit c: Connection): UnitmeasureRow = { map.put(unsaved.unitmeasurecode, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala deleted file mode 100644 index d6a4a84601..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package unitmeasure - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class UnitmeasureStructure[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) - extends Relation[UnitmeasureFields, UnitmeasureRow, Row] - with UnitmeasureFields[Row] { outer => - - override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): UnitmeasureStructure[NewRow] = - new UnitmeasureStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala index 91f56cdea4..d0afa4fdd6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala @@ -11,6 +11,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VproductanddescriptionMVFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,27 @@ trait VproductanddescriptionMVFields[Row] { val cultureid: Field[CultureId, Row] val description: Field[/* max 400 chars */ String, Row] } -object VproductanddescriptionMVFields extends VproductanddescriptionMVStructure[VproductanddescriptionMVRow](None, identity, (_, x) => x) +object VproductanddescriptionMVFields { + val structure: Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, VproductanddescriptionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) + extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] { + + override val fields: VproductanddescriptionMVFields[Row] = new VproductanddescriptionMVFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productmodel, fields.cultureid, fields.description) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala index 0b98cf8b98..9311ff0954 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VproductanddescriptionMVRepoImpl extends VproductanddescriptionMVRepo { override def select: SelectBuilder[VproductanddescriptionMVFields, VproductanddescriptionMVRow] = { - SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields, VproductanddescriptionMVRow.rowParser) + SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields.structure, VproductanddescriptionMVRow.rowParser) } override def selectAll(implicit c: Connection): List[VproductanddescriptionMVRow] = { SQL"""select "productid", "name", "productmodel", "cultureid", "description" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala deleted file mode 100644 index e73b8f47cc..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductanddescription - -import adventureworks.production.culture.CultureId -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VproductanddescriptionMVStructure[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) - extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] - with VproductanddescriptionMVFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productmodel, cultureid, description) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): VproductanddescriptionMVStructure[NewRow] = - new VproductanddescriptionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala index a1ee8c8769..4b6529c054 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelcatalogdescriptionViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -41,5 +43,47 @@ trait VproductmodelcatalogdescriptionViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelcatalogdescriptionViewFields extends VproductmodelcatalogdescriptionViewStructure[VproductmodelcatalogdescriptionViewRow](None, identity, (_, x) => x) +object VproductmodelcatalogdescriptionViewFields { + val structure: Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, VproductmodelcatalogdescriptionViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) + extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] { + + override val fields: VproductmodelcatalogdescriptionViewFields[Row] = new VproductmodelcatalogdescriptionViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) + override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) + override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) + override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) + override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) + override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) + override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) + override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) + override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) + override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) + override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) + override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) + override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) + override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) + override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) + override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) + override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.Summary, fields.manufacturer, fields.copyright, fields.producturl, fields.warrantyperiod, fields.warrantydescription, fields.noofyears, fields.maintenancedescription, fields.wheel, fields.saddle, fields.pedal, fields.bikeframe, fields.crankset, fields.pictureangle, fields.picturesize, fields.productphotoid, fields.material, fields.color, fields.productline, fields.style, fields.riderexperience, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala index 88e2ce9a41..b64eed2bf3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VproductmodelcatalogdescriptionViewRepoImpl extends VproductmodelcatalogdescriptionViewRepo { override def select: SelectBuilder[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow] = { - SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow.rowParser) + SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields.structure, VproductmodelcatalogdescriptionViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VproductmodelcatalogdescriptionViewRow] = { SQL"""select "productmodelid", "name", "Summary", "manufacturer", "copyright", "producturl", "warrantyperiod", "warrantydescription", "noofyears", "maintenancedescription", "wheel", "saddle", "pedal", "bikeframe", "crankset", "pictureangle", "picturesize", "productphotoid", "material", "color", "productline", "style", "riderexperience", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala deleted file mode 100644 index 71298da4a1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala +++ /dev/null @@ -1,54 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelcatalogdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelcatalogdescriptionViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) - extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] - with VproductmodelcatalogdescriptionViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) - override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) - override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) - override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) - override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) - override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) - override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) - override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) - override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) - override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) - override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) - override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) - override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) - override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) - override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) - override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) - override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, Summary, manufacturer, copyright, producturl, warrantyperiod, warrantydescription, noofyears, maintenancedescription, wheel, saddle, pedal, bikeframe, crankset, pictureangle, picturesize, productphotoid, material, color, productline, style, riderexperience, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): VproductmodelcatalogdescriptionViewStructure[NewRow] = - new VproductmodelcatalogdescriptionViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala index 5355b83c42..0561081996 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelinstructionsViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -27,5 +29,33 @@ trait VproductmodelinstructionsViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelinstructionsViewFields extends VproductmodelinstructionsViewStructure[VproductmodelinstructionsViewRow](None, identity, (_, x) => x) +object VproductmodelinstructionsViewFields { + val structure: Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, VproductmodelinstructionsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) + extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] { + + override val fields: VproductmodelinstructionsViewFields[Row] = new VproductmodelinstructionsViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) + override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) + override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) + override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) + override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) + override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.instructions, fields.LocationID, fields.SetupHours, fields.MachineHours, fields.LaborHours, fields.LotSize, fields.Step, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala index d4e3291a41..5eb8d8f427 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VproductmodelinstructionsViewRepoImpl extends VproductmodelinstructionsViewRepo { override def select: SelectBuilder[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow] = { - SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow.rowParser) + SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields.structure, VproductmodelinstructionsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VproductmodelinstructionsViewRow] = { SQL"""select "productmodelid", "name", "instructions", "LocationID", "SetupHours", "MachineHours", "LaborHours", "LotSize", "Step", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala deleted file mode 100644 index 8a44e88098..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelinstructions - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelinstructionsViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) - extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] - with VproductmodelinstructionsViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) - override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) - override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) - override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) - override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) - override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, instructions, LocationID, SetupHours, MachineHours, LaborHours, LotSize, Step, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): VproductmodelinstructionsViewStructure[NewRow] = - new VproductmodelinstructionsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala index add847ee57..d97de3b55d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -26,5 +28,31 @@ trait WorkorderFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderFields extends WorkorderStructure[WorkorderRow](None, identity, (_, x) => x) +object WorkorderFields { + val structure: Relation[WorkorderFields, WorkorderRow, WorkorderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) + extends Relation[WorkorderFields, WorkorderRow, Row] { + + override val fields: WorkorderFields[Row] = new WorkorderFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala index 22c5189785..2f8b4e96f0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala @@ -31,7 +31,7 @@ class WorkorderRepoImpl extends WorkorderRepo { SQL"""delete from production.workorder where "workorderid" = ${ParameterValue(workorderid, null, WorkorderId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilder("production.workorder", WorkorderFields) + DeleteBuilder("production.workorder", WorkorderFields.structure) } override def insert(unsaved: WorkorderRow)(implicit c: Connection): WorkorderRow = { SQL"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") @@ -83,7 +83,7 @@ class WorkorderRepoImpl extends WorkorderRepo { streamingInsert(s"""COPY production.workorder("productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "workorderid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(WorkorderRowUnsaved.text, c) } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderSql("production.workorder", WorkorderFields, WorkorderRow.rowParser) + SelectBuilderSql("production.workorder", WorkorderFields.structure, WorkorderRow.rowParser) } override def selectAll(implicit c: Connection): List[WorkorderRow] = { SQL"""select "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text @@ -118,7 +118,7 @@ class WorkorderRepoImpl extends WorkorderRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilder("production.workorder", WorkorderFields, WorkorderRow.rowParser) + UpdateBuilder("production.workorder", WorkorderFields.structure, WorkorderRow.rowParser) } override def upsert(unsaved: WorkorderRow)(implicit c: Connection): WorkorderRow = { SQL"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala index 4a9e6ee989..76417bf756 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala @@ -25,7 +25,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], map.remove(workorderid).isDefined } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderFields.structure.fields, map) } override def insert(unsaved: WorkorderRow)(implicit c: Connection): WorkorderRow = { val _ = if (map.contains(unsaved.workorderid)) @@ -53,7 +53,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], unsaved.size.toLong } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderMock(WorkorderFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(WorkorderFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[WorkorderRow] = { map.values.toList @@ -74,7 +74,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], } } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderFields.structure.fields, map) } override def upsert(unsaved: WorkorderRow)(implicit c: Connection): WorkorderRow = { map.put(unsaved.workorderid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala deleted file mode 100644 index 0ec9c52e4c..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorder - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderStructure[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) - extends Relation[WorkorderFields, WorkorderRow, Row] - with WorkorderFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): WorkorderStructure[NewRow] = - new WorkorderStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala index 65f604d366..2f946e6814 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderroutingFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -29,5 +31,34 @@ trait WorkorderroutingFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderroutingFields extends WorkorderroutingStructure[WorkorderroutingRow](None, identity, (_, x) => x) +object WorkorderroutingFields { + val structure: Relation[WorkorderroutingFields, WorkorderroutingRow, WorkorderroutingRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) + extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] { + + override val fields: WorkorderroutingFields[Row] = new WorkorderroutingFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala index 66bdc19763..5995148422 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala @@ -32,7 +32,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { SQL"""delete from production.workorderrouting where "workorderid" = ${ParameterValue(compositeId.workorderid, null, WorkorderId.toStatement)} AND "productid" = ${ParameterValue(compositeId.productid, null, ToStatement.intToStatement)} AND "operationsequence" = ${ParameterValue(compositeId.operationsequence, null, TypoShort.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilder("production.workorderrouting", WorkorderroutingFields) + DeleteBuilder("production.workorderrouting", WorkorderroutingFields.structure) } override def insert(unsaved: WorkorderroutingRow)(implicit c: Connection): WorkorderroutingRow = { SQL"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") @@ -84,7 +84,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { streamingInsert(s"""COPY production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(WorkorderroutingRowUnsaved.text, c) } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderSql("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.rowParser) + SelectBuilderSql("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.rowParser) } override def selectAll(implicit c: Connection): List[WorkorderroutingRow] = { SQL"""select "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text @@ -113,7 +113,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilder("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.rowParser) + UpdateBuilder("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.rowParser) } override def upsert(unsaved: WorkorderroutingRow)(implicit c: Connection): WorkorderroutingRow = { SQL"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala index 9ce7c64661..7733634a2a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala @@ -25,7 +25,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work map.remove(compositeId).isDefined } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields.structure.fields, map) } override def insert(unsaved: WorkorderroutingRow)(implicit c: Connection): WorkorderroutingRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work unsaved.size.toLong } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderMock(WorkorderroutingFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(WorkorderroutingFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[WorkorderroutingRow] = { map.values.toList @@ -71,7 +71,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work } } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields.structure.fields, map) } override def upsert(unsaved: WorkorderroutingRow)(implicit c: Connection): WorkorderroutingRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala deleted file mode 100644 index 7329ce8cd9..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorderrouting - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderroutingStructure[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) - extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] - with WorkorderroutingFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): WorkorderroutingStructure[NewRow] = - new WorkorderroutingStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala index 5ab9028beb..156b398b0a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PodViewFields[Row] { val id: Field[Int, Row] @@ -25,5 +27,32 @@ trait PodViewFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PodViewFields extends PodViewStructure[PodViewRow](None, identity, (_, x) => x) +object PodViewFields { + val structure: Relation[PodViewFields, PodViewRow, PodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) + extends Relation[PodViewFields, PodViewRow, Row] { + + override val fields: PodViewFields[Row] = new PodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala index 2e87a895de..46d24e2a81 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PodViewRepoImpl extends PodViewRepo { override def select: SelectBuilder[PodViewFields, PodViewRow] = { - SelectBuilderSql("pu.pod", PodViewFields, PodViewRow.rowParser) + SelectBuilderSql("pu.pod", PodViewFields.structure, PodViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PodViewRow] = { SQL"""select "id", "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala deleted file mode 100644 index 15d841aa3a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PodViewStructure[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) - extends Relation[PodViewFields, PodViewRow, Row] - with PodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): PodViewStructure[NewRow] = - new PodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala index a2734562de..818241dfa7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PohViewFields[Row] { val id: Field[PurchaseorderheaderId, Row] @@ -30,5 +32,35 @@ trait PohViewFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PohViewFields extends PohViewStructure[PohViewRow](None, identity, (_, x) => x) +object PohViewFields { + val structure: Relation[PohViewFields, PohViewRow, PohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) + extends Relation[PohViewFields, PohViewRow, Row] { + + override val fields: PohViewFields[Row] = new PohViewFields[Row] { + override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala index 9fefca516f..a1d3dcdba5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PohViewRepoImpl extends PohViewRepo { override def select: SelectBuilder[PohViewFields, PohViewRow] = { - SelectBuilderSql("pu.poh", PohViewFields, PohViewRow.rowParser) + SelectBuilderSql("pu.poh", PohViewFields.structure, PohViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PohViewRow] = { SQL"""select "id", "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala deleted file mode 100644 index 8051ee9753..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package poh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PohViewStructure[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) - extends Relation[PohViewFields, PohViewRow, Row] - with PohViewFields[Row] { outer => - - override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): PohViewStructure[NewRow] = - new PohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala index a84f485b9b..6c4e236e74 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PvViewFields[Row] { val id: Field[ProductId, Row] @@ -28,5 +30,34 @@ trait PvViewFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PvViewFields extends PvViewStructure[PvViewRow](None, identity, (_, x) => x) +object PvViewFields { + val structure: Relation[PvViewFields, PvViewRow, PvViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) + extends Relation[PvViewFields, PvViewRow, Row] { + + override val fields: PvViewFields[Row] = new PvViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala index 65b63308ee..1ce12e81d9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PvViewRepoImpl extends PvViewRepo { override def select: SelectBuilder[PvViewFields, PvViewRow] = { - SelectBuilderSql("pu.pv", PvViewFields, PvViewRow.rowParser) + SelectBuilderSql("pu.pv", PvViewFields.structure, PvViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PvViewRow] = { SQL"""select "id", "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala deleted file mode 100644 index 5fbdabf88c..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pv - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PvViewStructure[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) - extends Relation[PvViewFields, PvViewRow, Row] - with PvViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): PvViewStructure[NewRow] = - new PvViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala index 50bdb92690..49a93d912c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SmViewFields[Row] { val id: Field[ShipmethodId, Row] @@ -22,5 +24,29 @@ trait SmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SmViewFields extends SmViewStructure[SmViewRow](None, identity, (_, x) => x) +object SmViewFields { + val structure: Relation[SmViewFields, SmViewRow, SmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) + extends Relation[SmViewFields, SmViewRow, Row] { + + override val fields: SmViewFields[Row] = new SmViewFields[Row] { + override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala index 6748141b04..b5347771d2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SmViewRepoImpl extends SmViewRepo { override def select: SelectBuilder[SmViewFields, SmViewRow] = { - SelectBuilderSql("pu.sm", SmViewFields, SmViewRow.rowParser) + SelectBuilderSql("pu.sm", SmViewFields.structure, SmViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SmViewRow] = { SQL"""select "id", "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala deleted file mode 100644 index 0af2eb84b3..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package sm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SmViewStructure[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) - extends Relation[SmViewFields, SmViewRow, Row] - with SmViewFields[Row] { outer => - - override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): SmViewStructure[NewRow] = - new SmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala index f871aa41b8..e3aea50fff 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -27,5 +29,31 @@ trait VViewFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VViewFields extends VViewStructure[VViewRow](None, identity, (_, x) => x) +object VViewFields { + val structure: Relation[VViewFields, VViewRow, VViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) + extends Relation[VViewFields, VViewRow, Row] { + + override val fields: VViewFields[Row] = new VViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala index b38ec45583..b8d8176e8c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VViewRepoImpl extends VViewRepo { override def select: SelectBuilder[VViewFields, VViewRow] = { - SelectBuilderSql("pu.v", VViewFields, VViewRow.rowParser) + SelectBuilderSql("pu.v", VViewFields.structure, VViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VViewRow] = { SQL"""select "id", "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala deleted file mode 100644 index 5177f6ecf7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package v - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VViewStructure[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) - extends Relation[VViewFields, VViewRow, Row] - with VViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): VViewStructure[NewRow] = - new VViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala index 643c78dd65..1482e2a9c3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala @@ -8,12 +8,34 @@ package public package identity_test import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait IdentityTestFields[Row] { val alwaysGenerated: Field[Int, Row] val defaultGenerated: Field[Int, Row] val name: IdField[IdentityTestId, Row] } -object IdentityTestFields extends IdentityTestStructure[IdentityTestRow](None, identity, (_, x) => x) +object IdentityTestFields { + val structure: Relation[IdentityTestFields, IdentityTestRow, IdentityTestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) + extends Relation[IdentityTestFields, IdentityTestRow, Row] { + + override val fields: IdentityTestFields[Row] = new IdentityTestFields[Row] { + override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) + override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) + override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.alwaysGenerated, fields.defaultGenerated, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala index 8640391f3a..ee547899c4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala @@ -27,7 +27,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { SQL"""delete from public.identity-test where "name" = ${ParameterValue(name, null, IdentityTestId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilder("public.identity-test", IdentityTestFields) + DeleteBuilder("public.identity-test", IdentityTestFields.structure) } override def insert(unsaved: IdentityTestRow)(implicit c: Connection): IdentityTestRow = { SQL"""insert into public.identity-test("always_generated", "default_generated", "name") @@ -69,7 +69,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { streamingInsert(s"""COPY public.identity-test("name", "default_generated") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(IdentityTestRowUnsaved.text, c) } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderSql("public.identity-test", IdentityTestFields, IdentityTestRow.rowParser) + SelectBuilderSql("public.identity-test", IdentityTestFields.structure, IdentityTestRow.rowParser) } override def selectAll(implicit c: Connection): List[IdentityTestRow] = { SQL"""select "always_generated", "default_generated", "name" @@ -98,7 +98,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilder("public.identity-test", IdentityTestFields, IdentityTestRow.rowParser) + UpdateBuilder("public.identity-test", IdentityTestFields.structure, IdentityTestRow.rowParser) } override def upsert(unsaved: IdentityTestRow)(implicit c: Connection): IdentityTestRow = { SQL"""insert into public.identity-test("always_generated", "default_generated", "name") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala index 6d4e814952..0a42b8c85f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala @@ -25,7 +25,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest map.remove(name).isDefined } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilderMock(DeleteParams.empty, IdentityTestFields, map) + DeleteBuilderMock(DeleteParams.empty, IdentityTestFields.structure.fields, map) } override def insert(unsaved: IdentityTestRow)(implicit c: Connection): IdentityTestRow = { val _ = if (map.contains(unsaved.name)) @@ -53,7 +53,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest unsaved.size.toLong } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderMock(IdentityTestFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(IdentityTestFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[IdentityTestRow] = { map.values.toList @@ -74,7 +74,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest } } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilderMock(UpdateParams.empty, IdentityTestFields, map) + UpdateBuilderMock(UpdateParams.empty, IdentityTestFields.structure.fields, map) } override def upsert(unsaved: IdentityTestRow)(implicit c: Connection): IdentityTestRow = { map.put(unsaved.name, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala deleted file mode 100644 index 60539f99aa..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package identity_test - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class IdentityTestStructure[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) - extends Relation[IdentityTestFields, IdentityTestRow, Row] - with IdentityTestFields[Row] { outer => - - override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) - override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) - override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](alwaysGenerated, defaultGenerated, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): IdentityTestStructure[NewRow] = - new IdentityTestStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala index 16e50c3232..cf013b86df 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala @@ -34,6 +34,8 @@ import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PgtestFields[Row] { val bool: Field[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestFields[Row] { val varchares: Field[Array[String], Row] val xmles: Field[Array[TypoXml], Row] } -object PgtestFields extends PgtestStructure[PgtestRow](None, identity, (_, x) => x) +object PgtestFields { + val structure: Relation[PgtestFields, PgtestRow, PgtestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) + extends Relation[PgtestFields, PgtestRow, Row] { + + override val fields: PgtestFields[Row] = new PgtestFields[Row] { + override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala index 07aed047ae..0c43aece9f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala @@ -46,7 +46,7 @@ import typo.dsl.UpdateBuilder class PgtestRepoImpl extends PgtestRepo { override def delete: DeleteBuilder[PgtestFields, PgtestRow] = { - DeleteBuilder("public.pgtest", PgtestFields) + DeleteBuilder("public.pgtest", PgtestFields.structure) } override def insert(unsaved: PgtestRow)(implicit c: Connection): PgtestRow = { SQL"""insert into public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -60,7 +60,7 @@ class PgtestRepoImpl extends PgtestRepo { streamingInsert(s"""COPY public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""", batchSize, unsaved)(PgtestRow.text, c) } override def select: SelectBuilder[PgtestFields, PgtestRow] = { - SelectBuilderSql("public.pgtest", PgtestFields, PgtestRow.rowParser) + SelectBuilderSql("public.pgtest", PgtestFields.structure, PgtestRow.rowParser) } override def selectAll(implicit c: Connection): List[PgtestRow] = { SQL"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" @@ -68,6 +68,6 @@ class PgtestRepoImpl extends PgtestRepo { """.as(PgtestRow.rowParser(1).*) } override def update: UpdateBuilder[PgtestFields, PgtestRow] = { - UpdateBuilder("public.pgtest", PgtestFields, PgtestRow.rowParser) + UpdateBuilder("public.pgtest", PgtestFields.structure, PgtestRow.rowParser) } } diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala deleted file mode 100644 index fc9276d7c9..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtest - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PgtestStructure[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) - extends Relation[PgtestFields, PgtestRow, Row] - with PgtestFields[Row] { outer => - - override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): PgtestStructure[NewRow] = - new PgtestStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala index 74ebafbc89..6549622d3f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala @@ -33,7 +33,9 @@ import adventureworks.customtypes.TypoVector import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PgtestnullFields[Row] { val bool: OptField[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestnullFields[Row] { val varchares: OptField[Array[String], Row] val xmles: OptField[Array[TypoXml], Row] } -object PgtestnullFields extends PgtestnullStructure[PgtestnullRow](None, identity, (_, x) => x) +object PgtestnullFields { + val structure: Relation[PgtestnullFields, PgtestnullRow, PgtestnullRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) + extends Relation[PgtestnullFields, PgtestnullRow, Row] { + + override val fields: PgtestnullFields[Row] = new PgtestnullFields[Row] { + override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala index 00fce58a78..352c68f552 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala @@ -46,7 +46,7 @@ import typo.dsl.UpdateBuilder class PgtestnullRepoImpl extends PgtestnullRepo { override def delete: DeleteBuilder[PgtestnullFields, PgtestnullRow] = { - DeleteBuilder("public.pgtestnull", PgtestnullFields) + DeleteBuilder("public.pgtestnull", PgtestnullFields.structure) } override def insert(unsaved: PgtestnullRow)(implicit c: Connection): PgtestnullRow = { SQL"""insert into public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -60,7 +60,7 @@ class PgtestnullRepoImpl extends PgtestnullRepo { streamingInsert(s"""COPY public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""", batchSize, unsaved)(PgtestnullRow.text, c) } override def select: SelectBuilder[PgtestnullFields, PgtestnullRow] = { - SelectBuilderSql("public.pgtestnull", PgtestnullFields, PgtestnullRow.rowParser) + SelectBuilderSql("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.rowParser) } override def selectAll(implicit c: Connection): List[PgtestnullRow] = { SQL"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" @@ -68,6 +68,6 @@ class PgtestnullRepoImpl extends PgtestnullRepo { """.as(PgtestnullRow.rowParser(1).*) } override def update: UpdateBuilder[PgtestnullFields, PgtestnullRow] = { - UpdateBuilder("public.pgtestnull", PgtestnullFields, PgtestnullRow.rowParser) + UpdateBuilder("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.rowParser) } } diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala deleted file mode 100644 index a5e6a04b14..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtestnull - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PgtestnullStructure[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) - extends Relation[PgtestnullFields, PgtestnullRow, Row] - with PgtestnullFields[Row] { outer => - - override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): PgtestnullStructure[NewRow] = - new PgtestnullStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersFields.scala index 13061aa062..ad568b3fab 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersFields.scala @@ -10,8 +10,10 @@ package users import adventureworks.customtypes.TypoInstant import adventureworks.customtypes.TypoUnknownCitext import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait UsersFields[Row] { val userId: IdField[UsersId, Row] @@ -22,5 +24,29 @@ trait UsersFields[Row] { val createdAt: Field[TypoInstant, Row] val verifiedOn: OptField[TypoInstant, Row] } -object UsersFields extends UsersStructure[UsersRow](None, identity, (_, x) => x) +object UsersFields { + val structure: Relation[UsersFields, UsersRow, UsersRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) + extends Relation[UsersFields, UsersRow, Row] { + + override val fields: UsersFields[Row] = new UsersFields[Row] { + override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) + override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) + override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) + override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) + override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.userId, fields.name, fields.lastName, fields.email, fields.password, fields.createdAt, fields.verifiedOn) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala index 0354514b0e..8a70e1012d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala @@ -30,7 +30,7 @@ class UsersRepoImpl extends UsersRepo { SQL"""delete from public.users where "user_id" = ${ParameterValue(userId, null, UsersId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilder("public.users", UsersFields) + DeleteBuilder("public.users", UsersFields.structure) } override def insert(unsaved: UsersRow)(implicit c: Connection): UsersRow = { SQL"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") @@ -77,7 +77,7 @@ class UsersRepoImpl extends UsersRepo { streamingInsert(s"""COPY public.users("user_id", "name", "last_name", "email", "password", "verified_on", "created_at") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(UsersRowUnsaved.text, c) } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderSql("public.users", UsersFields, UsersRow.rowParser) + SelectBuilderSql("public.users", UsersFields.structure, UsersRow.rowParser) } override def selectAll(implicit c: Connection): List[UsersRow] = { SQL"""select "user_id", "name", "last_name", "email"::text, "password", "created_at"::text, "verified_on"::text @@ -117,7 +117,7 @@ class UsersRepoImpl extends UsersRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilder("public.users", UsersFields, UsersRow.rowParser) + UpdateBuilder("public.users", UsersFields.structure, UsersRow.rowParser) } override def upsert(unsaved: UsersRow)(implicit c: Connection): UsersRow = { SQL"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala index b44347c200..d6ede6d8e6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala @@ -26,7 +26,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], map.remove(userId).isDefined } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilderMock(DeleteParams.empty, UsersFields, map) + DeleteBuilderMock(DeleteParams.empty, UsersFields.structure.fields, map) } override def insert(unsaved: UsersRow)(implicit c: Connection): UsersRow = { val _ = if (map.contains(unsaved.userId)) @@ -54,7 +54,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], unsaved.size.toLong } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderMock(UsersFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(UsersFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[UsersRow] = { map.values.toList @@ -78,7 +78,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], } } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilderMock(UpdateParams.empty, UsersFields, map) + UpdateBuilderMock(UpdateParams.empty, UsersFields.structure.fields, map) } override def upsert(unsaved: UsersRow)(implicit c: Connection): UsersRow = { map.put(unsaved.userId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala deleted file mode 100644 index df2145cd74..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package users - -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoUnknownCitext -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class UsersStructure[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) - extends Relation[UsersFields, UsersRow, Row] - with UsersFields[Row] { outer => - - override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) - override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) - override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) - override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) - override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](userId, name, lastName, email, password, createdAt, verifiedOn) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): UsersStructure[NewRow] = - new UsersStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala index abc2ebb2ab..37dee82d95 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala @@ -12,8 +12,10 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductvendorFields[Row] { val productid: IdField[ProductId, Row] @@ -28,5 +30,33 @@ trait ProductvendorFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductvendorFields extends ProductvendorStructure[ProductvendorRow](None, identity, (_, x) => x) +object ProductvendorFields { + val structure: Relation[ProductvendorFields, ProductvendorRow, ProductvendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) + extends Relation[ProductvendorFields, ProductvendorRow, Row] { + + override val fields: ProductvendorFields[Row] = new ProductvendorFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala index 60b658c42c..b1aea3a3bc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala @@ -32,7 +32,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { SQL"""delete from purchasing.productvendor where "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)} AND "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilder("purchasing.productvendor", ProductvendorFields) + DeleteBuilder("purchasing.productvendor", ProductvendorFields.structure) } override def insert(unsaved: ProductvendorRow)(implicit c: Connection): ProductvendorRow = { SQL"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") @@ -83,7 +83,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { streamingInsert(s"""COPY purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductvendorRowUnsaved.text, c) } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderSql("purchasing.productvendor", ProductvendorFields, ProductvendorRow.rowParser) + SelectBuilderSql("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.rowParser) } override def selectAll(implicit c: Connection): List[ProductvendorRow] = { SQL"""select "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text @@ -112,7 +112,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilder("purchasing.productvendor", ProductvendorFields, ProductvendorRow.rowParser) + UpdateBuilder("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.rowParser) } override def upsert(unsaved: ProductvendorRow)(implicit c: Connection): ProductvendorRow = { SQL"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala index 855ffdea20..805fe6c252 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala @@ -25,7 +25,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven map.remove(compositeId).isDefined } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductvendorFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductvendorFields.structure.fields, map) } override def insert(unsaved: ProductvendorRow)(implicit c: Connection): ProductvendorRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven unsaved.size.toLong } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderMock(ProductvendorFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ProductvendorFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ProductvendorRow] = { map.values.toList @@ -71,7 +71,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven } } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductvendorFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductvendorFields.structure.fields, map) } override def upsert(unsaved: ProductvendorRow)(implicit c: Connection): ProductvendorRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala deleted file mode 100644 index 2499959af1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package productvendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductvendorStructure[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) - extends Relation[ProductvendorFields, ProductvendorRow, Row] - with ProductvendorFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): ProductvendorStructure[NewRow] = - new ProductvendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala index b66e95a16d..75cca10754 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PurchaseorderdetailFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -25,5 +27,31 @@ trait PurchaseorderdetailFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderdetailFields extends PurchaseorderdetailStructure[PurchaseorderdetailRow](None, identity, (_, x) => x) +object PurchaseorderdetailFields { + val structure: Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, PurchaseorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) + extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] { + + override val fields: PurchaseorderdetailFields[Row] = new PurchaseorderdetailFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala index d4fc137e7f..9eabf619d5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala @@ -17,7 +17,7 @@ import typo.dsl.SelectBuilderSql class PurchaseorderdetailRepoImpl extends PurchaseorderdetailRepo { override def select: SelectBuilder[PurchaseorderdetailFields, PurchaseorderdetailRow] = { - SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields, PurchaseorderdetailRow.rowParser) + SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields.structure, PurchaseorderdetailRow.rowParser) } override def selectAll(implicit c: Connection): List[PurchaseorderdetailRow] = { SQL"""select "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala deleted file mode 100644 index 2d1db47893..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PurchaseorderdetailStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) - extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] - with PurchaseorderdetailFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): PurchaseorderdetailStructure[NewRow] = - new PurchaseorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala index 3289fd3a0c..a177fe4c26 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PurchaseorderheaderFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -29,5 +31,34 @@ trait PurchaseorderheaderFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderheaderFields extends PurchaseorderheaderStructure[PurchaseorderheaderRow](None, identity, (_, x) => x) +object PurchaseorderheaderFields { + val structure: Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, PurchaseorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) + extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] { + + override val fields: PurchaseorderheaderFields[Row] = new PurchaseorderheaderFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala index b0fd0dff0c..0d9f6d627a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala @@ -31,7 +31,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { SQL"""delete from purchasing.purchaseorderheader where "purchaseorderid" = ${ParameterValue(purchaseorderid, null, PurchaseorderheaderId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields) + DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure) } override def insert(unsaved: PurchaseorderheaderRow)(implicit c: Connection): PurchaseorderheaderRow = { SQL"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") @@ -104,7 +104,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { streamingInsert(s"""COPY purchasing.purchaseorderheader("employeeid", "vendorid", "shipmethodid", "shipdate", "purchaseorderid", "revisionnumber", "status", "orderdate", "subtotal", "taxamt", "freight", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PurchaseorderheaderRowUnsaved.text, c) } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.rowParser) + SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.rowParser) } override def selectAll(implicit c: Connection): List[PurchaseorderheaderRow] = { SQL"""select "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text @@ -142,7 +142,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.rowParser) + UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.rowParser) } override def upsert(unsaved: PurchaseorderheaderRow)(implicit c: Connection): PurchaseorderheaderRow = { SQL"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala index f6f304a11c..2de39b99af 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala @@ -25,7 +25,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved map.remove(purchaseorderid).isDefined } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def insert(unsaved: PurchaseorderheaderRow)(implicit c: Connection): PurchaseorderheaderRow = { val _ = if (map.contains(unsaved.purchaseorderid)) @@ -53,7 +53,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved unsaved.size.toLong } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderMock(PurchaseorderheaderFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PurchaseorderheaderFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PurchaseorderheaderRow] = { map.values.toList @@ -74,7 +74,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved } } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def upsert(unsaved: PurchaseorderheaderRow)(implicit c: Connection): PurchaseorderheaderRow = { map.put(unsaved.purchaseorderid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala deleted file mode 100644 index e35523c02d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PurchaseorderheaderStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) - extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] - with PurchaseorderheaderFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): PurchaseorderheaderStructure[NewRow] = - new PurchaseorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala index 5d1d6be534..af04c0d732 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShipmethodFields[Row] { val shipmethodid: IdField[ShipmethodId, Row] @@ -21,5 +23,28 @@ trait ShipmethodFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShipmethodFields extends ShipmethodStructure[ShipmethodRow](None, identity, (_, x) => x) +object ShipmethodFields { + val structure: Relation[ShipmethodFields, ShipmethodRow, ShipmethodRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) + extends Relation[ShipmethodFields, ShipmethodRow, Row] { + + override val fields: ShipmethodFields[Row] = new ShipmethodFields[Row] { + override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala index 3da29153bd..78226587ae 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala @@ -30,7 +30,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { SQL"""delete from purchasing.shipmethod where "shipmethodid" = ${ParameterValue(shipmethodid, null, ShipmethodId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilder("purchasing.shipmethod", ShipmethodFields) + DeleteBuilder("purchasing.shipmethod", ShipmethodFields.structure) } override def insert(unsaved: ShipmethodRow)(implicit c: Connection): ShipmethodRow = { SQL"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") @@ -88,7 +88,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { streamingInsert(s"""COPY purchasing.shipmethod("name", "shipmethodid", "shipbase", "shiprate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShipmethodRowUnsaved.text, c) } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderSql("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.rowParser) + SelectBuilderSql("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.rowParser) } override def selectAll(implicit c: Connection): List[ShipmethodRow] = { SQL"""select "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text @@ -120,7 +120,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilder("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.rowParser) + UpdateBuilder("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.rowParser) } override def upsert(unsaved: ShipmethodRow)(implicit c: Connection): ShipmethodRow = { SQL"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala index 3997dd5ebe..76d4281f7a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala @@ -25,7 +25,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], map.remove(shipmethodid).isDefined } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilderMock(DeleteParams.empty, ShipmethodFields, map) + DeleteBuilderMock(DeleteParams.empty, ShipmethodFields.structure.fields, map) } override def insert(unsaved: ShipmethodRow)(implicit c: Connection): ShipmethodRow = { val _ = if (map.contains(unsaved.shipmethodid)) @@ -53,7 +53,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], unsaved.size.toLong } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderMock(ShipmethodFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ShipmethodFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ShipmethodRow] = { map.values.toList @@ -74,7 +74,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], } } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilderMock(UpdateParams.empty, ShipmethodFields, map) + UpdateBuilderMock(UpdateParams.empty, ShipmethodFields.structure.fields, map) } override def upsert(unsaved: ShipmethodRow)(implicit c: Connection): ShipmethodRow = { map.put(unsaved.shipmethodid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala deleted file mode 100644 index 90cfaab1ca..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package shipmethod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShipmethodStructure[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) - extends Relation[ShipmethodFields, ShipmethodRow, Row] - with ShipmethodFields[Row] { outer => - - override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): ShipmethodStructure[NewRow] = - new ShipmethodStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala index 4e5bed797b..cfa02cbff3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala @@ -14,8 +14,10 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VendorFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -27,5 +29,30 @@ trait VendorFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VendorFields extends VendorStructure[VendorRow](None, identity, (_, x) => x) +object VendorFields { + val structure: Relation[VendorFields, VendorRow, VendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) + extends Relation[VendorFields, VendorRow, Row] { + + override val fields: VendorFields[Row] = new VendorFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala index f266a0dffe..9a7d28e6a7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala @@ -34,7 +34,7 @@ class VendorRepoImpl extends VendorRepo { SQL"""delete from purchasing.vendor where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilder("purchasing.vendor", VendorFields) + DeleteBuilder("purchasing.vendor", VendorFields.structure) } override def insert(unsaved: VendorRow)(implicit c: Connection): VendorRow = { SQL"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") @@ -88,7 +88,7 @@ class VendorRepoImpl extends VendorRepo { streamingInsert(s"""COPY purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "purchasingwebserviceurl", "preferredvendorstatus", "activeflag", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(VendorRowUnsaved.text, c) } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderSql("purchasing.vendor", VendorFields, VendorRow.rowParser) + SelectBuilderSql("purchasing.vendor", VendorFields.structure, VendorRow.rowParser) } override def selectAll(implicit c: Connection): List[VendorRow] = { SQL"""select "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text @@ -122,7 +122,7 @@ class VendorRepoImpl extends VendorRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilder("purchasing.vendor", VendorFields, VendorRow.rowParser) + UpdateBuilder("purchasing.vendor", VendorFields.structure, VendorRow.rowParser) } override def upsert(unsaved: VendorRow)(implicit c: Connection): VendorRow = { SQL"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala index dcea02cefa..d08fc33647 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala @@ -26,7 +26,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilderMock(DeleteParams.empty, VendorFields, map) + DeleteBuilderMock(DeleteParams.empty, VendorFields.structure.fields, map) } override def insert(unsaved: VendorRow)(implicit c: Connection): VendorRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], unsaved.size.toLong } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderMock(VendorFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(VendorFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[VendorRow] = { map.values.toList @@ -75,7 +75,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], } } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilderMock(UpdateParams.empty, VendorFields, map) + UpdateBuilderMock(UpdateParams.empty, VendorFields.structure.fields, map) } override def upsert(unsaved: VendorRow)(implicit c: Connection): VendorRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala deleted file mode 100644 index dea19ffaa1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VendorStructure[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) - extends Relation[VendorFields, VendorRow, Row] - with VendorFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): VendorStructure[NewRow] = - new VendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala index 9b5004aa23..d8035477dc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vvendorwithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VvendorwithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VvendorwithaddressesViewFields extends VvendorwithaddressesViewStructure[VvendorwithaddressesViewRow](None, identity, (_, x) => x) +object VvendorwithaddressesViewFields { + val structure: Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, VvendorwithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) + extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] { + + override val fields: VvendorwithaddressesViewFields[Row] = new VvendorwithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala index bce783c3d4..b018d1c906 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VvendorwithaddressesViewRepoImpl extends VvendorwithaddressesViewRepo { override def select: SelectBuilder[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow] = { - SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields, VvendorwithaddressesViewRow.rowParser) + SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields.structure, VvendorwithaddressesViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VvendorwithaddressesViewRow] = { SQL"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala deleted file mode 100644 index 01e59470ed..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) - extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] - with VvendorwithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): VvendorwithaddressesViewStructure[NewRow] = - new VvendorwithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala index 6208dfdd89..680b225e00 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VvendorwithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VvendorwithcontactsViewFields extends VvendorwithcontactsViewStructure[VvendorwithcontactsViewRow](None, identity, (_, x) => x) +object VvendorwithcontactsViewFields { + val structure: Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, VvendorwithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) + extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] { + + override val fields: VvendorwithcontactsViewFields[Row] = new VvendorwithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala index 3ee1f56eaf..7c7c7c226e 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VvendorwithcontactsViewRepoImpl extends VvendorwithcontactsViewRepo { override def select: SelectBuilder[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow] = { - SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields, VvendorwithcontactsViewRow.rowParser) + SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields.structure, VvendorwithcontactsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VvendorwithcontactsViewRow] = { SQL"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala deleted file mode 100644 index d0e892230d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) - extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] - with VvendorwithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): VvendorwithcontactsViewStructure[NewRow] = - new VvendorwithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala index 9abdec14b2..868041fd0a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CustomerId, Row] @@ -24,5 +26,29 @@ trait CViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala index 1042741105..129c085806 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("sa.c", CViewFields, CViewRow.rowParser) + SelectBuilderSql("sa.c", CViewFields.structure, CViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CViewRow] = { SQL"""select "id", "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala deleted file mode 100644 index 973be24e13..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala index 1ac3a32ec9..14a74e0e4d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CcViewFields[Row] { val id: Field[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,29 @@ trait CcViewFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CcViewFields extends CcViewStructure[CcViewRow](None, identity, (_, x) => x) +object CcViewFields { + val structure: Relation[CcViewFields, CcViewRow, CcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) + extends Relation[CcViewFields, CcViewRow, Row] { + + override val fields: CcViewFields[Row] = new CcViewFields[Row] { + override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala index 8baa4a6475..8113bf9866 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CcViewRepoImpl extends CcViewRepo { override def select: SelectBuilder[CcViewFields, CcViewRow] = { - SelectBuilderSql("sa.cc", CcViewFields, CcViewRow.rowParser) + SelectBuilderSql("sa.cc", CcViewFields.structure, CcViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CcViewRow] = { SQL"""select "id", "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala deleted file mode 100644 index 247390ff7b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CcViewStructure[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) - extends Relation[CcViewFields, CcViewRow, Row] - with CcViewFields[Row] { outer => - - override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): CcViewStructure[NewRow] = - new CcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala index d4e16756d0..f54c580ed4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import adventureworks.sales.currencyrate.CurrencyrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val currencyrateid: Field[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CrViewFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala index d748e10689..ba0e3bff83 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("sa.cr", CrViewFields, CrViewRow.rowParser) + SelectBuilderSql("sa.cr", CrViewFields.structure, CrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CrViewRow] = { SQL"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala deleted file mode 100644 index 0d386f89eb..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import adventureworks.sales.currencyrate.CurrencyrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala index 37d0698bdc..1575037e7f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrcViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val currencycode: Field[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrcViewFields extends CrcViewStructure[CrcViewRow](None, identity, (_, x) => x) +object CrcViewFields { + val structure: Relation[CrcViewFields, CrcViewRow, CrcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) + extends Relation[CrcViewFields, CrcViewRow, Row] { + + override val fields: CrcViewFields[Row] = new CrcViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala index 74f5e46190..32d8f5c1e8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CrcViewRepoImpl extends CrcViewRepo { override def select: SelectBuilder[CrcViewFields, CrcViewRow] = { - SelectBuilderSql("sa.crc", CrcViewFields, CrcViewRow.rowParser) + SelectBuilderSql("sa.crc", CrcViewFields.structure, CrcViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CrcViewRow] = { SQL"""select "countryregioncode", "currencycode", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala deleted file mode 100644 index 5b718a802d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package crc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrcViewStructure[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) - extends Relation[CrcViewFields, CrcViewRow, Row] - with CrcViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): CrcViewStructure[NewRow] = - new CrcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala index 561a3cbd51..cb3d130142 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CuViewFields[Row] { val id: Field[CurrencyId, Row] @@ -18,5 +20,26 @@ trait CuViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CuViewFields extends CuViewStructure[CuViewRow](None, identity, (_, x) => x) +object CuViewFields { + val structure: Relation[CuViewFields, CuViewRow, CuViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) + extends Relation[CuViewFields, CuViewRow, Row] { + + override val fields: CuViewFields[Row] = new CuViewFields[Row] { + override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala index cc1e3ee15e..69258ad6c0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class CuViewRepoImpl extends CuViewRepo { override def select: SelectBuilder[CuViewFields, CuViewRow] = { - SelectBuilderSql("sa.cu", CuViewFields, CuViewRow.rowParser) + SelectBuilderSql("sa.cu", CuViewFields.structure, CuViewRow.rowParser) } override def selectAll(implicit c: Connection): List[CuViewRow] = { SQL"""select "id", "currencycode", "name", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala deleted file mode 100644 index 309775518a..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cu - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CuViewStructure[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) - extends Relation[CuViewFields, CuViewRow, Row] - with CuViewFields[Row] { outer => - - override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): CuViewStructure[NewRow] = - new CuViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala index b6907470a9..7b5f37a711 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PccViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait PccViewFields[Row] { val creditcardid: Field[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PccViewFields extends PccViewStructure[PccViewRow](None, identity, (_, x) => x) +object PccViewFields { + val structure: Relation[PccViewFields, PccViewRow, PccViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) + extends Relation[PccViewFields, PccViewRow, Row] { + + override val fields: PccViewFields[Row] = new PccViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala index f1af628a17..823978914a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class PccViewRepoImpl extends PccViewRepo { override def select: SelectBuilder[PccViewFields, PccViewRow] = { - SelectBuilderSql("sa.pcc", PccViewFields, PccViewRow.rowParser) + SelectBuilderSql("sa.pcc", PccViewFields.structure, PccViewRow.rowParser) } override def selectAll(implicit c: Connection): List[PccViewRow] = { SQL"""select "id", "businessentityid", "creditcardid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala deleted file mode 100644 index 9332c2a157..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package pcc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PccViewStructure[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) - extends Relation[PccViewFields, PccViewRow, Row] - with PccViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): PccViewStructure[NewRow] = - new PccViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala index 3ed9b93bd2..5b134747ee 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait SViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala index 745f489b85..dd0651835b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("sa.s", SViewFields, SViewRow.rowParser) + SelectBuilderSql("sa.s", SViewFields.structure, SViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SViewRow] = { SQL"""select "id", "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala deleted file mode 100644 index 3a1ef7e533..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala index 6dc86bbbd5..4da657ee9b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.sales.shoppingcartitem.ShoppingcartitemId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SciViewFields[Row] { val id: Field[ShoppingcartitemId, Row] @@ -21,5 +23,29 @@ trait SciViewFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SciViewFields extends SciViewStructure[SciViewRow](None, identity, (_, x) => x) +object SciViewFields { + val structure: Relation[SciViewFields, SciViewRow, SciViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) + extends Relation[SciViewFields, SciViewRow, Row] { + + override val fields: SciViewFields[Row] = new SciViewFields[Row] { + override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala index 69e95ac240..3549d300b7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SciViewRepoImpl extends SciViewRepo { override def select: SelectBuilder[SciViewFields, SciViewRow] = { - SelectBuilderSql("sa.sci", SciViewFields, SciViewRow.rowParser) + SelectBuilderSql("sa.sci", SciViewFields.structure, SciViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SciViewRow] = { SQL"""select "id", "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala deleted file mode 100644 index f253da1923..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sci - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.sales.shoppingcartitem.ShoppingcartitemId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SciViewStructure[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) - extends Relation[SciViewFields, SciViewRow, Row] - with SciViewFields[Row] { outer => - - override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): SciViewStructure[NewRow] = - new SciViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala index 4c304c3efa..d6207238ad 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SoViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -27,5 +29,34 @@ trait SoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SoViewFields extends SoViewStructure[SoViewRow](None, identity, (_, x) => x) +object SoViewFields { + val structure: Relation[SoViewFields, SoViewRow, SoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) + extends Relation[SoViewFields, SoViewRow, Row] { + + override val fields: SoViewFields[Row] = new SoViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala index 97f59899f4..413e08748d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SoViewRepoImpl extends SoViewRepo { override def select: SelectBuilder[SoViewFields, SoViewRow] = { - SelectBuilderSql("sa.so", SoViewFields, SoViewRow.rowParser) + SelectBuilderSql("sa.so", SoViewFields.structure, SoViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SoViewRow] = { SQL"""select "id", "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala deleted file mode 100644 index 520a7fbf2d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package so - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SoViewStructure[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) - extends Relation[SoViewFields, SoViewRow, Row] - with SoViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): SoViewStructure[NewRow] = - new SoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala index cf7338e74f..02bd8b80ba 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SodViewFields[Row] { val id: Field[Int, Row] @@ -29,5 +31,33 @@ trait SodViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SodViewFields extends SodViewStructure[SodViewRow](None, identity, (_, x) => x) +object SodViewFields { + val structure: Relation[SodViewFields, SodViewRow, SodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) + extends Relation[SodViewFields, SodViewRow, Row] { + + override val fields: SodViewFields[Row] = new SodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala index ad8dd76eaf..4a820a73c0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SodViewRepoImpl extends SodViewRepo { override def select: SelectBuilder[SodViewFields, SodViewRow] = { - SelectBuilderSql("sa.sod", SodViewFields, SodViewRow.rowParser) + SelectBuilderSql("sa.sod", SodViewFields.structure, SodViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SodViewRow] = { SQL"""select "id", "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala deleted file mode 100644 index 8fbde8f240..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SodViewStructure[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) - extends Relation[SodViewFields, SodViewRow, Row] - with SodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): SodViewStructure[NewRow] = - new SodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala index 6c1c92f5dc..0352e3f4f0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala @@ -22,7 +22,9 @@ import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SohViewFields[Row] { val id: Field[SalesorderheaderId, Row] @@ -52,5 +54,48 @@ trait SohViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohViewFields extends SohViewStructure[SohViewRow](None, identity, (_, x) => x) +object SohViewFields { + val structure: Relation[SohViewFields, SohViewRow, SohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) + extends Relation[SohViewFields, SohViewRow, Row] { + + override val fields: SohViewFields[Row] = new SohViewFields[Row] { + override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala index 9e6777c9f4..113db1d2a0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SohViewRepoImpl extends SohViewRepo { override def select: SelectBuilder[SohViewFields, SohViewRow] = { - SelectBuilderSql("sa.soh", SohViewFields, SohViewRow.rowParser) + SelectBuilderSql("sa.soh", SohViewFields.structure, SohViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SohViewRow] = { SQL"""select "id", "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala deleted file mode 100644 index 3dbb6fb70e..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala +++ /dev/null @@ -1,65 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package soh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SohViewStructure[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) - extends Relation[SohViewFields, SohViewRow, Row] - with SohViewFields[Row] { outer => - - override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): SohViewStructure[NewRow] = - new SohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala index dec06a94ba..e86f54b1a4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SohsrViewFields[Row] { val salesorderid: Field[SalesorderheaderId, Row] val salesreasonid: Field[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohsrViewFields extends SohsrViewStructure[SohsrViewRow](None, identity, (_, x) => x) +object SohsrViewFields { + val structure: Relation[SohsrViewFields, SohsrViewRow, SohsrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) + extends Relation[SohsrViewFields, SohsrViewRow, Row] { + + override val fields: SohsrViewFields[Row] = new SohsrViewFields[Row] { + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala index b1c6cc4f0c..1a78625bf7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SohsrViewRepoImpl extends SohsrViewRepo { override def select: SelectBuilder[SohsrViewFields, SohsrViewRow] = { - SelectBuilderSql("sa.sohsr", SohsrViewFields, SohsrViewRow.rowParser) + SelectBuilderSql("sa.sohsr", SohsrViewFields.structure, SohsrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SohsrViewRow] = { SQL"""select "salesorderid", "salesreasonid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala deleted file mode 100644 index 9fa9d7c4bf..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sohsr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SohsrViewStructure[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) - extends Relation[SohsrViewFields, SohsrViewRow, Row] - with SohsrViewFields[Row] { outer => - - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): SohsrViewStructure[NewRow] = - new SohsrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala index 5a3d272dc3..2085675349 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SopViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -20,5 +22,27 @@ trait SopViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SopViewFields extends SopViewStructure[SopViewRow](None, identity, (_, x) => x) +object SopViewFields { + val structure: Relation[SopViewFields, SopViewRow, SopViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) + extends Relation[SopViewFields, SopViewRow, Row] { + + override val fields: SopViewFields[Row] = new SopViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala index 58c5f62f35..ddc6281120 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SopViewRepoImpl extends SopViewRepo { override def select: SelectBuilder[SopViewFields, SopViewRow] = { - SelectBuilderSql("sa.sop", SopViewFields, SopViewRow.rowParser) + SelectBuilderSql("sa.sop", SopViewFields.structure, SopViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SopViewRow] = { SQL"""select "id", "specialofferid", "productid", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala deleted file mode 100644 index c08095d790..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sop - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SopViewStructure[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) - extends Relation[SopViewFields, SopViewRow, Row] - with SopViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): SopViewStructure[NewRow] = - new SopViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala index e7971f3a5c..5d1e67a5e3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala index 11f25fe312..535a45b1a8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("sa.sp", SpViewFields, SpViewRow.rowParser) + SelectBuilderSql("sa.sp", SpViewFields.structure, SpViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SpViewRow] = { SQL"""select "id", "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala deleted file mode 100644 index 0c0b5a2eaa..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala index bb06ed4ef0..471daad168 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpqhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait SpqhViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpqhViewFields extends SpqhViewStructure[SpqhViewRow](None, identity, (_, x) => x) +object SpqhViewFields { + val structure: Relation[SpqhViewFields, SpqhViewRow, SpqhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) + extends Relation[SpqhViewFields, SpqhViewRow, Row] { + + override val fields: SpqhViewFields[Row] = new SpqhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala index 4a6f8f653e..ca5a088c5d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SpqhViewRepoImpl extends SpqhViewRepo { override def select: SelectBuilder[SpqhViewFields, SpqhViewRow] = { - SelectBuilderSql("sa.spqh", SpqhViewFields, SpqhViewRow.rowParser) + SelectBuilderSql("sa.spqh", SpqhViewFields.structure, SpqhViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SpqhViewRow] = { SQL"""select "id", "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala deleted file mode 100644 index 34b89696d3..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package spqh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpqhViewStructure[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) - extends Relation[SpqhViewFields, SpqhViewRow, Row] - with SpqhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): SpqhViewStructure[NewRow] = - new SpqhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala index ba8f474bc0..a2c960adf2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[SalesreasonId, Row] @@ -19,5 +21,27 @@ trait SrViewFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala index acbe0581d6..77073f0e49 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("sa.sr", SrViewFields, SrViewRow.rowParser) + SelectBuilderSql("sa.sr", SrViewFields.structure, SrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SrViewRow] = { SQL"""select "id", "salesreasonid", "name", "reasontype", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala deleted file mode 100644 index 1e139ef1a5..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala index 3a4d8cb334..256cd7fe24 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait StViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -27,5 +29,33 @@ trait StViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StViewFields extends StViewStructure[StViewRow](None, identity, (_, x) => x) +object StViewFields { + val structure: Relation[StViewFields, StViewRow, StViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) + extends Relation[StViewFields, StViewRow, Row] { + + override val fields: StViewFields[Row] = new StViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala index 0bfd0ad8e9..b3cf3d2de4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class StViewRepoImpl extends StViewRepo { override def select: SelectBuilder[StViewFields, StViewRow] = { - SelectBuilderSql("sa.st", StViewFields, StViewRow.rowParser) + SelectBuilderSql("sa.st", StViewFields.structure, StViewRow.rowParser) } override def selectAll(implicit c: Connection): List[StViewRow] = { SQL"""select "id", "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala deleted file mode 100644 index eb457f7da7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package st - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class StViewStructure[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) - extends Relation[StViewFields, StViewRow, Row] - with StViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): StViewStructure[NewRow] = - new StViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala index 9b2188ab3b..b785d079a8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SthViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -23,5 +25,29 @@ trait SthViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SthViewFields extends SthViewStructure[SthViewRow](None, identity, (_, x) => x) +object SthViewFields { + val structure: Relation[SthViewFields, SthViewRow, SthViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) + extends Relation[SthViewFields, SthViewRow, Row] { + + override val fields: SthViewFields[Row] = new SthViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala index c618d1c0cf..479443c379 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class SthViewRepoImpl extends SthViewRepo { override def select: SelectBuilder[SthViewFields, SthViewRow] = { - SelectBuilderSql("sa.sth", SthViewFields, SthViewRow.rowParser) + SelectBuilderSql("sa.sth", SthViewFields.structure, SthViewRow.rowParser) } override def selectAll(implicit c: Connection): List[SthViewRow] = { SQL"""select "id", "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala deleted file mode 100644 index 77b4f4a831..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sth - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SthViewStructure[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) - extends Relation[SthViewFields, SthViewRow, Row] - with SthViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): SthViewStructure[NewRow] = - new SthViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala index 3a2d182b62..8cc4154f37 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala @@ -14,6 +14,8 @@ import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import adventureworks.sales.salestaxrate.SalestaxrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait TrViewFields[Row] { val id: Field[SalestaxrateId, Row] @@ -25,5 +27,30 @@ trait TrViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TrViewFields extends TrViewStructure[TrViewRow](None, identity, (_, x) => x) +object TrViewFields { + val structure: Relation[TrViewFields, TrViewRow, TrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) + extends Relation[TrViewFields, TrViewRow, Row] { + + override val fields: TrViewFields[Row] = new TrViewFields[Row] { + override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala index 50836e4fa1..012cec38f8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class TrViewRepoImpl extends TrViewRepo { override def select: SelectBuilder[TrViewFields, TrViewRow] = { - SelectBuilderSql("sa.tr", TrViewFields, TrViewRow.rowParser) + SelectBuilderSql("sa.tr", TrViewFields.structure, TrViewRow.rowParser) } override def selectAll(implicit c: Connection): List[TrViewRow] = { SQL"""select "id", "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala deleted file mode 100644 index 2726f9efad..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package tr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import adventureworks.sales.salestaxrate.SalestaxrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class TrViewStructure[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) - extends Relation[TrViewFields, TrViewRow, Row] - with TrViewFields[Row] { outer => - - override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): TrViewStructure[NewRow] = - new TrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala index e63f0dd19c..0bdb14c8d5 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregioncurrencyFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val currencycode: IdField[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregioncurrencyFields extends CountryregioncurrencyStructure[CountryregioncurrencyRow](None, identity, (_, x) => x) +object CountryregioncurrencyFields { + val structure: Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, CountryregioncurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) + extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] { + + override val fields: CountryregioncurrencyFields[Row] = new CountryregioncurrencyFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala index 4bb539a426..804bd75e98 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala @@ -29,7 +29,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { SQL"""delete from sales.countryregioncurrency where "countryregioncode" = ${ParameterValue(compositeId.countryregioncode, null, CountryregionId.toStatement)} AND "currencycode" = ${ParameterValue(compositeId.currencycode, null, CurrencyId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields) + DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure) } override def insert(unsaved: CountryregioncurrencyRow)(implicit c: Connection): CountryregioncurrencyRow = { SQL"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") @@ -72,7 +72,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { streamingInsert(s"""COPY sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CountryregioncurrencyRowUnsaved.text, c) } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.rowParser) + SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.rowParser) } override def selectAll(implicit c: Connection): List[CountryregioncurrencyRow] = { SQL"""select "countryregioncode", "currencycode", "modifieddate"::text @@ -93,7 +93,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.rowParser) + UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.rowParser) } override def upsert(unsaved: CountryregioncurrencyRow)(implicit c: Connection): CountryregioncurrencyRow = { SQL"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala index 871fecf337..a3015c79a0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala @@ -25,7 +25,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns map.remove(compositeId).isDefined } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def insert(unsaved: CountryregioncurrencyRow)(implicit c: Connection): CountryregioncurrencyRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns unsaved.size.toLong } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderMock(CountryregioncurrencyFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CountryregioncurrencyFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CountryregioncurrencyRow] = { map.values.toList @@ -71,7 +71,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns } } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def upsert(unsaved: CountryregioncurrencyRow)(implicit c: Connection): CountryregioncurrencyRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala deleted file mode 100644 index fe119bdf72..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package countryregioncurrency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregioncurrencyStructure[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) - extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] - with CountryregioncurrencyFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): CountryregioncurrencyStructure[NewRow] = - new CountryregioncurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala index b21f8ef928..7a086d6037 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CreditcardFields[Row] { val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,28 @@ trait CreditcardFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CreditcardFields extends CreditcardStructure[CreditcardRow](None, identity, (_, x) => x) +object CreditcardFields { + val structure: Relation[CreditcardFields, CreditcardRow, CreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) + extends Relation[CreditcardFields, CreditcardRow, Row] { + + override val fields: CreditcardFields[Row] = new CreditcardFields[Row] { + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala index ea9e8e41d5..7011a39274 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala @@ -30,7 +30,7 @@ class CreditcardRepoImpl extends CreditcardRepo { SQL"""delete from sales.creditcard where "creditcardid" = ${ParameterValue(creditcardid, null, /* user-picked */ CustomCreditcardId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilder("sales.creditcard", CreditcardFields) + DeleteBuilder("sales.creditcard", CreditcardFields.structure) } override def insert(unsaved: CreditcardRow)(implicit c: Connection): CreditcardRow = { SQL"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") @@ -79,7 +79,7 @@ class CreditcardRepoImpl extends CreditcardRepo { streamingInsert(s"""COPY sales.creditcard("cardtype", "cardnumber", "expmonth", "expyear", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CreditcardRowUnsaved.text, c) } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderSql("sales.creditcard", CreditcardFields, CreditcardRow.rowParser) + SelectBuilderSql("sales.creditcard", CreditcardFields.structure, CreditcardRow.rowParser) } override def selectAll(implicit c: Connection): List[CreditcardRow] = { SQL"""select "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text @@ -111,7 +111,7 @@ class CreditcardRepoImpl extends CreditcardRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilder("sales.creditcard", CreditcardFields, CreditcardRow.rowParser) + UpdateBuilder("sales.creditcard", CreditcardFields.structure, CreditcardRow.rowParser) } override def upsert(unsaved: CreditcardRow)(implicit c: Connection): CreditcardRow = { SQL"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala index 70a6efcd86..9b150e9825 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala @@ -27,7 +27,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], map.remove(creditcardid).isDefined } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, CreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, CreditcardFields.structure.fields, map) } override def insert(unsaved: CreditcardRow)(implicit c: Connection): CreditcardRow = { val _ = if (map.contains(unsaved.creditcardid)) @@ -55,7 +55,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], unsaved.size.toLong } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderMock(CreditcardFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CreditcardFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CreditcardRow] = { map.values.toList @@ -76,7 +76,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], } } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, CreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, CreditcardFields.structure.fields, map) } override def upsert(unsaved: CreditcardRow)(implicit c: Connection): CreditcardRow = { map.put(unsaved.creditcardid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala deleted file mode 100644 index 4f259e9545..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package creditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CreditcardStructure[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) - extends Relation[CreditcardFields, CreditcardRow, Row] - with CreditcardFields[Row] { outer => - - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): CreditcardStructure[NewRow] = - new CreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala index 079f2ff5cf..960ab415e6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala @@ -10,12 +10,34 @@ package currency import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyFields[Row] { val currencycode: IdField[CurrencyId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyFields extends CurrencyStructure[CurrencyRow](None, identity, (_, x) => x) +object CurrencyFields { + val structure: Relation[CurrencyFields, CurrencyRow, CurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) + extends Relation[CurrencyFields, CurrencyRow, Row] { + + override val fields: CurrencyFields[Row] = new CurrencyFields[Row] { + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala index f0ca9a47dc..180f40a2a2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala @@ -28,7 +28,7 @@ class CurrencyRepoImpl extends CurrencyRepo { SQL"""delete from sales.currency where "currencycode" = ${ParameterValue(currencycode, null, CurrencyId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilder("sales.currency", CurrencyFields) + DeleteBuilder("sales.currency", CurrencyFields.structure) } override def insert(unsaved: CurrencyRow)(implicit c: Connection): CurrencyRow = { SQL"""insert into sales.currency("currencycode", "name", "modifieddate") @@ -71,7 +71,7 @@ class CurrencyRepoImpl extends CurrencyRepo { streamingInsert(s"""COPY sales.currency("currencycode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CurrencyRowUnsaved.text, c) } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderSql("sales.currency", CurrencyFields, CurrencyRow.rowParser) + SelectBuilderSql("sales.currency", CurrencyFields.structure, CurrencyRow.rowParser) } override def selectAll(implicit c: Connection): List[CurrencyRow] = { SQL"""select "currencycode", "name", "modifieddate"::text @@ -100,7 +100,7 @@ class CurrencyRepoImpl extends CurrencyRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilder("sales.currency", CurrencyFields, CurrencyRow.rowParser) + UpdateBuilder("sales.currency", CurrencyFields.structure, CurrencyRow.rowParser) } override def upsert(unsaved: CurrencyRow)(implicit c: Connection): CurrencyRow = { SQL"""insert into sales.currency("currencycode", "name", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala index 4e7181005b..3120803ff8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala @@ -25,7 +25,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], map.remove(currencycode).isDefined } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyFields.structure.fields, map) } override def insert(unsaved: CurrencyRow)(implicit c: Connection): CurrencyRow = { val _ = if (map.contains(unsaved.currencycode)) @@ -53,7 +53,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], unsaved.size.toLong } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderMock(CurrencyFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CurrencyFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CurrencyRow] = { map.values.toList @@ -74,7 +74,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], } } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyFields.structure.fields, map) } override def upsert(unsaved: CurrencyRow)(implicit c: Connection): CurrencyRow = { map.put(unsaved.currencycode, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala deleted file mode 100644 index 7eeeac8bd7..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyStructure[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) - extends Relation[CurrencyFields, CurrencyRow, Row] - with CurrencyFields[Row] { outer => - - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): CurrencyStructure[NewRow] = - new CurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala index ec65aaace3..17def49bdc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala @@ -10,7 +10,9 @@ package currencyrate import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyrateFields[Row] { val currencyrateid: IdField[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CurrencyrateFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyrateFields extends CurrencyrateStructure[CurrencyrateRow](None, identity, (_, x) => x) +object CurrencyrateFields { + val structure: Relation[CurrencyrateFields, CurrencyrateRow, CurrencyrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) + extends Relation[CurrencyrateFields, CurrencyrateRow, Row] { + + override val fields: CurrencyrateFields[Row] = new CurrencyrateFields[Row] { + override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala index d14952df4a..93e9ba15b7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala @@ -29,7 +29,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { SQL"""delete from sales.currencyrate where "currencyrateid" = ${ParameterValue(currencyrateid, null, CurrencyrateId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilder("sales.currencyrate", CurrencyrateFields) + DeleteBuilder("sales.currencyrate", CurrencyrateFields.structure) } override def insert(unsaved: CurrencyrateRow)(implicit c: Connection): CurrencyrateRow = { SQL"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") @@ -79,7 +79,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { streamingInsert(s"""COPY sales.currencyrate("currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "currencyrateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CurrencyrateRowUnsaved.text, c) } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderSql("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.rowParser) + SelectBuilderSql("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.rowParser) } override def selectAll(implicit c: Connection): List[CurrencyrateRow] = { SQL"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text @@ -112,7 +112,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilder("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.rowParser) + UpdateBuilder("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.rowParser) } override def upsert(unsaved: CurrencyrateRow)(implicit c: Connection): CurrencyrateRow = { SQL"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala index 979d0ee098..5702abaca2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala @@ -25,7 +25,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate map.remove(currencyrateid).isDefined } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields.structure.fields, map) } override def insert(unsaved: CurrencyrateRow)(implicit c: Connection): CurrencyrateRow = { val _ = if (map.contains(unsaved.currencyrateid)) @@ -53,7 +53,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate unsaved.size.toLong } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderMock(CurrencyrateFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CurrencyrateFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CurrencyrateRow] = { map.values.toList @@ -74,7 +74,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate } } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields.structure.fields, map) } override def upsert(unsaved: CurrencyrateRow)(implicit c: Connection): CurrencyrateRow = { map.put(unsaved.currencyrateid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala deleted file mode 100644 index 72836802d4..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currencyrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyrateStructure[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) - extends Relation[CurrencyrateFields, CurrencyrateRow, Row] - with CurrencyrateFields[Row] { outer => - - override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): CurrencyrateStructure[NewRow] = - new CurrencyrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala index 1710962884..e558f1e8fd 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CustomerFields[Row] { val customerid: IdField[CustomerId, Row] @@ -23,5 +25,28 @@ trait CustomerFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CustomerFields extends CustomerStructure[CustomerRow](None, identity, (_, x) => x) +object CustomerFields { + val structure: Relation[CustomerFields, CustomerRow, CustomerRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) + extends Relation[CustomerFields, CustomerRow, Row] { + + override val fields: CustomerFields[Row] = new CustomerFields[Row] { + override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala index ac6b537e15..795d7b3fb4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala @@ -31,7 +31,7 @@ class CustomerRepoImpl extends CustomerRepo { SQL"""delete from sales.customer where "customerid" = ${ParameterValue(customerid, null, CustomerId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilder("sales.customer", CustomerFields) + DeleteBuilder("sales.customer", CustomerFields.structure) } override def insert(unsaved: CustomerRow)(implicit c: Connection): CustomerRow = { SQL"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") @@ -83,7 +83,7 @@ class CustomerRepoImpl extends CustomerRepo { streamingInsert(s"""COPY sales.customer("personid", "storeid", "territoryid", "customerid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CustomerRowUnsaved.text, c) } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderSql("sales.customer", CustomerFields, CustomerRow.rowParser) + SelectBuilderSql("sales.customer", CustomerFields.structure, CustomerRow.rowParser) } override def selectAll(implicit c: Connection): List[CustomerRow] = { SQL"""select "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text @@ -115,7 +115,7 @@ class CustomerRepoImpl extends CustomerRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilder("sales.customer", CustomerFields, CustomerRow.rowParser) + UpdateBuilder("sales.customer", CustomerFields.structure, CustomerRow.rowParser) } override def upsert(unsaved: CustomerRow)(implicit c: Connection): CustomerRow = { SQL"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala index e86a602b3f..6c8e1631f4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala @@ -25,7 +25,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], map.remove(customerid).isDefined } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilderMock(DeleteParams.empty, CustomerFields, map) + DeleteBuilderMock(DeleteParams.empty, CustomerFields.structure.fields, map) } override def insert(unsaved: CustomerRow)(implicit c: Connection): CustomerRow = { val _ = if (map.contains(unsaved.customerid)) @@ -53,7 +53,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], unsaved.size.toLong } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderMock(CustomerFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(CustomerFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[CustomerRow] = { map.values.toList @@ -74,7 +74,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], } } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilderMock(UpdateParams.empty, CustomerFields, map) + UpdateBuilderMock(UpdateParams.empty, CustomerFields.structure.fields, map) } override def upsert(unsaved: CustomerRow)(implicit c: Connection): CustomerRow = { map.put(unsaved.customerid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala deleted file mode 100644 index 079a4d5365..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package customer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CustomerStructure[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) - extends Relation[CustomerFields, CustomerRow, Row] - with CustomerFields[Row] { outer => - - override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): CustomerStructure[NewRow] = - new CustomerStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala index be1477987f..122d7418f1 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersoncreditcardFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersoncreditcardFields extends PersoncreditcardStructure[PersoncreditcardRow](None, identity, (_, x) => x) +object PersoncreditcardFields { + val structure: Relation[PersoncreditcardFields, PersoncreditcardRow, PersoncreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) + extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] { + + override val fields: PersoncreditcardFields[Row] = new PersoncreditcardFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala index e9bc27d30d..e0b58d6f73 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala @@ -29,7 +29,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { SQL"""delete from sales.personcreditcard where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "creditcardid" = ${ParameterValue(compositeId.creditcardid, null, /* user-picked */ CustomCreditcardId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilder("sales.personcreditcard", PersoncreditcardFields) + DeleteBuilder("sales.personcreditcard", PersoncreditcardFields.structure) } override def insert(unsaved: PersoncreditcardRow)(implicit c: Connection): PersoncreditcardRow = { SQL"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") @@ -72,7 +72,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { streamingInsert(s"""COPY sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersoncreditcardRowUnsaved.text, c) } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.rowParser) + SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.rowParser) } override def selectAll(implicit c: Connection): List[PersoncreditcardRow] = { SQL"""select "businessentityid", "creditcardid", "modifieddate"::text @@ -93,7 +93,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilder("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.rowParser) + UpdateBuilder("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.rowParser) } override def upsert(unsaved: PersoncreditcardRow)(implicit c: Connection): PersoncreditcardRow = { SQL"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala index 963d445954..dca30de0a4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala @@ -25,7 +25,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers map.remove(compositeId).isDefined } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields.structure.fields, map) } override def insert(unsaved: PersoncreditcardRow)(implicit c: Connection): PersoncreditcardRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers unsaved.size.toLong } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderMock(PersoncreditcardFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(PersoncreditcardFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[PersoncreditcardRow] = { map.values.toList @@ -71,7 +71,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers } } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields.structure.fields, map) } override def upsert(unsaved: PersoncreditcardRow)(implicit c: Connection): PersoncreditcardRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala deleted file mode 100644 index a2f37949c1..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package personcreditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersoncreditcardStructure[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) - extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] - with PersoncreditcardFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): PersoncreditcardStructure[NewRow] = - new PersoncreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala index 010bff8ba2..d624977d55 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala @@ -14,8 +14,10 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderdetailFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -29,5 +31,32 @@ trait SalesorderdetailFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderdetailFields extends SalesorderdetailStructure[SalesorderdetailRow](None, identity, (_, x) => x) +object SalesorderdetailFields { + val structure: Relation[SalesorderdetailFields, SalesorderdetailRow, SalesorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) + extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] { + + override val fields: SalesorderdetailFields[Row] = new SalesorderdetailFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala index 259f2faef1..b8a2f2e7ab 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala @@ -34,7 +34,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { SQL"""delete from sales.salesorderdetail where "salesorderid" = ${ParameterValue(compositeId.salesorderid, null, SalesorderheaderId.toStatement)} AND "salesorderdetailid" = ${ParameterValue(compositeId.salesorderdetailid, null, ToStatement.intToStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields) + DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields.structure) } override def insert(unsaved: SalesorderdetailRow)(implicit c: Connection): SalesorderdetailRow = { SQL"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") @@ -93,7 +93,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { streamingInsert(s"""COPY sales.salesorderdetail("salesorderid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "salesorderdetailid", "unitpricediscount", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderdetailRowUnsaved.text, c) } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.rowParser) + SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesorderdetailRow] = { SQL"""select "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text @@ -121,7 +121,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.rowParser) + UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.rowParser) } override def upsert(unsaved: SalesorderdetailRow)(implicit c: Connection): SalesorderdetailRow = { SQL"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala index f8f74a2547..f35992e662 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala @@ -25,7 +25,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale map.remove(compositeId).isDefined } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields.structure.fields, map) } override def insert(unsaved: SalesorderdetailRow)(implicit c: Connection): SalesorderdetailRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale unsaved.size.toLong } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderMock(SalesorderdetailFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesorderdetailFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesorderdetailRow] = { map.values.toList @@ -71,7 +71,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields.structure.fields, map) } override def upsert(unsaved: SalesorderdetailRow)(implicit c: Connection): SalesorderdetailRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala deleted file mode 100644 index c078344b97..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderdetailStructure[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) - extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] - with SalesorderdetailFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): SalesorderdetailStructure[NewRow] = - new SalesorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala index f1460d2735..51ae860197 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala @@ -21,8 +21,10 @@ import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderheaderFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -51,5 +53,47 @@ trait SalesorderheaderFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheaderFields extends SalesorderheaderStructure[SalesorderheaderRow](None, identity, (_, x) => x) +object SalesorderheaderFields { + val structure: Relation[SalesorderheaderFields, SalesorderheaderRow, SalesorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) + extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] { + + override val fields: SalesorderheaderFields[Row] = new SalesorderheaderFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala index b194c70230..ed769ac91b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala @@ -41,7 +41,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { SQL"""delete from sales.salesorderheader where "salesorderid" = ${ParameterValue(salesorderid, null, SalesorderheaderId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilder("sales.salesorderheader", SalesorderheaderFields) + DeleteBuilder("sales.salesorderheader", SalesorderheaderFields.structure) } override def insert(unsaved: SalesorderheaderRow)(implicit c: Connection): SalesorderheaderRow = { SQL"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") @@ -133,7 +133,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { streamingInsert(s"""COPY sales.salesorderheader("duedate", "shipdate", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "totaldue", "comment", "salesorderid", "revisionnumber", "orderdate", "status", "onlineorderflag", "subtotal", "taxamt", "freight", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderheaderRowUnsaved.text, c) } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.rowParser) + SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesorderheaderRow] = { SQL"""select "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text @@ -184,7 +184,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilder("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.rowParser) + UpdateBuilder("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.rowParser) } override def upsert(unsaved: SalesorderheaderRow)(implicit c: Connection): SalesorderheaderRow = { SQL"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala index 7bcae6d48f..a576cb875c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala @@ -25,7 +25,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale map.remove(salesorderid).isDefined } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields.structure.fields, map) } override def insert(unsaved: SalesorderheaderRow)(implicit c: Connection): SalesorderheaderRow = { val _ = if (map.contains(unsaved.salesorderid)) @@ -53,7 +53,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale unsaved.size.toLong } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderMock(SalesorderheaderFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesorderheaderFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesorderheaderRow] = { map.values.toList @@ -74,7 +74,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields.structure.fields, map) } override def upsert(unsaved: SalesorderheaderRow)(implicit c: Connection): SalesorderheaderRow = { map.put(unsaved.salesorderid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala deleted file mode 100644 index 8e071107e4..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala +++ /dev/null @@ -1,64 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderheaderStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) - extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] - with SalesorderheaderFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): SalesorderheaderStructure[NewRow] = - new SalesorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala index cb32083660..be3ec35703 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesorderheadersalesreasonFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] val salesreasonid: IdField[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheadersalesreasonFields extends SalesorderheadersalesreasonStructure[SalesorderheadersalesreasonRow](None, identity, (_, x) => x) +object SalesorderheadersalesreasonFields { + val structure: Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, SalesorderheadersalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) + extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] { + + override val fields: SalesorderheadersalesreasonFields[Row] = new SalesorderheadersalesreasonFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala index b4a6115ba5..0ca431cef7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala @@ -29,7 +29,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep SQL"""delete from sales.salesorderheadersalesreason where "salesorderid" = ${ParameterValue(compositeId.salesorderid, null, SalesorderheaderId.toStatement)} AND "salesreasonid" = ${ParameterValue(compositeId.salesreasonid, null, SalesreasonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields) + DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure) } override def insert(unsaved: SalesorderheadersalesreasonRow)(implicit c: Connection): SalesorderheadersalesreasonRow = { SQL"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") @@ -72,7 +72,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep streamingInsert(s"""COPY sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderheadersalesreasonRowUnsaved.text, c) } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.rowParser) + SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesorderheadersalesreasonRow] = { SQL"""select "salesorderid", "salesreasonid", "modifieddate"::text @@ -93,7 +93,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.rowParser) + UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.rowParser) } override def upsert(unsaved: SalesorderheadersalesreasonRow)(implicit c: Connection): SalesorderheadersalesreasonRow = { SQL"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala index c4c33351b5..0f039aba5c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala @@ -25,7 +25,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales map.remove(compositeId).isDefined } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesorderheadersalesreasonRow)(implicit c: Connection): SalesorderheadersalesreasonRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales unsaved.size.toLong } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderMock(SalesorderheadersalesreasonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesorderheadersalesreasonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesorderheadersalesreasonRow] = { map.values.toList @@ -71,7 +71,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales } } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesorderheadersalesreasonRow)(implicit c: Connection): SalesorderheadersalesreasonRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala deleted file mode 100644 index d463ac686b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheadersalesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesorderheadersalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) - extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] - with SalesorderheadersalesreasonFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): SalesorderheadersalesreasonStructure[NewRow] = - new SalesorderheadersalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala index 8d4bf9c6e2..1152a2fa27 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalespersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -26,5 +28,31 @@ trait SalespersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonFields extends SalespersonStructure[SalespersonRow](None, identity, (_, x) => x) +object SalespersonFields { + val structure: Relation[SalespersonFields, SalespersonRow, SalespersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) + extends Relation[SalespersonFields, SalespersonRow, Row] { + + override val fields: SalespersonFields[Row] = new SalespersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala index cc167c094f..34ac4d0027 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala @@ -32,7 +32,7 @@ class SalespersonRepoImpl extends SalespersonRepo { SQL"""delete from sales.salesperson where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilder("sales.salesperson", SalespersonFields) + DeleteBuilder("sales.salesperson", SalespersonFields.structure) } override def insert(unsaved: SalespersonRow)(implicit c: Connection): SalespersonRow = { SQL"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") @@ -96,7 +96,7 @@ class SalespersonRepoImpl extends SalespersonRepo { streamingInsert(s"""COPY sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalespersonRowUnsaved.text, c) } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderSql("sales.salesperson", SalespersonFields, SalespersonRow.rowParser) + SelectBuilderSql("sales.salesperson", SalespersonFields.structure, SalespersonRow.rowParser) } override def selectAll(implicit c: Connection): List[SalespersonRow] = { SQL"""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text @@ -131,7 +131,7 @@ class SalespersonRepoImpl extends SalespersonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilder("sales.salesperson", SalespersonFields, SalespersonRow.rowParser) + UpdateBuilder("sales.salesperson", SalespersonFields.structure, SalespersonRow.rowParser) } override def upsert(unsaved: SalespersonRow)(implicit c: Connection): SalespersonRow = { SQL"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala index 4524fb4904..a458be3095 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala @@ -26,7 +26,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonFields.structure.fields, map) } override def insert(unsaved: SalespersonRow)(implicit c: Connection): SalespersonRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow unsaved.size.toLong } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderMock(SalespersonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalespersonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalespersonRow] = { map.values.toList @@ -75,7 +75,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow } } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonFields.structure.fields, map) } override def upsert(unsaved: SalespersonRow)(implicit c: Connection): SalespersonRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala deleted file mode 100644 index 91c6def14d..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesperson - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalespersonStructure[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) - extends Relation[SalespersonFields, SalespersonRow, Row] - with SalespersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): SalespersonStructure[NewRow] = - new SalespersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala index 176e9e51e8..6a058db635 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalespersonquotahistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait SalespersonquotahistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonquotahistoryFields extends SalespersonquotahistoryStructure[SalespersonquotahistoryRow](None, identity, (_, x) => x) +object SalespersonquotahistoryFields { + val structure: Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, SalespersonquotahistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) + extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] { + + override val fields: SalespersonquotahistoryFields[Row] = new SalespersonquotahistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala index 997079e70f..e9c844ff91 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala @@ -30,7 +30,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { SQL"""delete from sales.salespersonquotahistory where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "quotadate" = ${ParameterValue(compositeId.quotadate, null, TypoLocalDateTime.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields) + DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure) } override def insert(unsaved: SalespersonquotahistoryRow)(implicit c: Connection): SalespersonquotahistoryRow = { SQL"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { streamingInsert(s"""COPY sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalespersonquotahistoryRowUnsaved.text, c) } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.rowParser) + SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[SalespersonquotahistoryRow] = { SQL"""select "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text @@ -101,7 +101,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.rowParser) + UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.rowParser) } override def upsert(unsaved: SalespersonquotahistoryRow)(implicit c: Connection): SalespersonquotahistoryRow = { SQL"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala index cdc4d4c484..ab89b01f64 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala @@ -25,7 +25,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo map.remove(compositeId).isDefined } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def insert(unsaved: SalespersonquotahistoryRow)(implicit c: Connection): SalespersonquotahistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo unsaved.size.toLong } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderMock(SalespersonquotahistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalespersonquotahistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalespersonquotahistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo } } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def upsert(unsaved: SalespersonquotahistoryRow)(implicit c: Connection): SalespersonquotahistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala deleted file mode 100644 index 9a540fa924..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salespersonquotahistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalespersonquotahistoryStructure[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) - extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] - with SalespersonquotahistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): SalespersonquotahistoryStructure[NewRow] = - new SalespersonquotahistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala index daf8632644..f40de30e1f 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala @@ -10,7 +10,9 @@ package salesreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesreasonFields[Row] { val salesreasonid: IdField[SalesreasonId, Row] @@ -18,5 +20,26 @@ trait SalesreasonFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesreasonFields extends SalesreasonStructure[SalesreasonRow](None, identity, (_, x) => x) +object SalesreasonFields { + val structure: Relation[SalesreasonFields, SalesreasonRow, SalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) + extends Relation[SalesreasonFields, SalesreasonRow, Row] { + + override val fields: SalesreasonFields[Row] = new SalesreasonFields[Row] { + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala index 1ce1333826..beff8aaa79 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala @@ -28,7 +28,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { SQL"""delete from sales.salesreason where "salesreasonid" = ${ParameterValue(salesreasonid, null, SalesreasonId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilder("sales.salesreason", SalesreasonFields) + DeleteBuilder("sales.salesreason", SalesreasonFields.structure) } override def insert(unsaved: SalesreasonRow)(implicit c: Connection): SalesreasonRow = { SQL"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") @@ -75,7 +75,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { streamingInsert(s"""COPY sales.salesreason("name", "reasontype", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesreasonRowUnsaved.text, c) } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderSql("sales.salesreason", SalesreasonFields, SalesreasonRow.rowParser) + SelectBuilderSql("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesreasonRow] = { SQL"""select "salesreasonid", "name", "reasontype", "modifieddate"::text @@ -105,7 +105,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilder("sales.salesreason", SalesreasonFields, SalesreasonRow.rowParser) + UpdateBuilder("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.rowParser) } override def upsert(unsaved: SalesreasonRow)(implicit c: Connection): SalesreasonRow = { SQL"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala index 0465525456..294a0de560 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala @@ -25,7 +25,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow map.remove(salesreasonid).isDefined } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesreasonRow)(implicit c: Connection): SalesreasonRow = { val _ = if (map.contains(unsaved.salesreasonid)) @@ -53,7 +53,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow unsaved.size.toLong } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderMock(SalesreasonFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesreasonFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesreasonRow] = { map.values.toList @@ -74,7 +74,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow } } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesreasonRow)(implicit c: Connection): SalesreasonRow = { map.put(unsaved.salesreasonid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala deleted file mode 100644 index 53f0e42c64..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) - extends Relation[SalesreasonFields, SalesreasonRow, Row] - with SalesreasonFields[Row] { outer => - - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): SalesreasonStructure[NewRow] = - new SalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala index 197f428841..faf31d3876 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalestaxrateFields[Row] { val salestaxrateid: IdField[SalestaxrateId, Row] @@ -24,5 +26,29 @@ trait SalestaxrateFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalestaxrateFields extends SalestaxrateStructure[SalestaxrateRow](None, identity, (_, x) => x) +object SalestaxrateFields { + val structure: Relation[SalestaxrateFields, SalestaxrateRow, SalestaxrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) + extends Relation[SalestaxrateFields, SalestaxrateRow, Row] { + + override val fields: SalestaxrateFields[Row] = new SalestaxrateFields[Row] { + override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala index fec23a87cc..b946e82243 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala @@ -32,7 +32,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { SQL"""delete from sales.salestaxrate where "salestaxrateid" = ${ParameterValue(salestaxrateid, null, SalestaxrateId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilder("sales.salestaxrate", SalestaxrateFields) + DeleteBuilder("sales.salestaxrate", SalestaxrateFields.structure) } override def insert(unsaved: SalestaxrateRow)(implicit c: Connection): SalestaxrateRow = { SQL"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") @@ -88,7 +88,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { streamingInsert(s"""COPY sales.salestaxrate("stateprovinceid", "taxtype", "name", "salestaxrateid", "taxrate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalestaxrateRowUnsaved.text, c) } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderSql("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.rowParser) + SelectBuilderSql("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.rowParser) } override def selectAll(implicit c: Connection): List[SalestaxrateRow] = { SQL"""select "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text @@ -121,7 +121,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilder("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.rowParser) + UpdateBuilder("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.rowParser) } override def upsert(unsaved: SalestaxrateRow)(implicit c: Connection): SalestaxrateRow = { SQL"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala index 650ab9fba0..8696457fb9 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala @@ -25,7 +25,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate map.remove(salestaxrateid).isDefined } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields, map) + DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields.structure.fields, map) } override def insert(unsaved: SalestaxrateRow)(implicit c: Connection): SalestaxrateRow = { val _ = if (map.contains(unsaved.salestaxrateid)) @@ -53,7 +53,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate unsaved.size.toLong } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderMock(SalestaxrateFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalestaxrateFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalestaxrateRow] = { map.values.toList @@ -74,7 +74,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate } } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields, map) + UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields.structure.fields, map) } override def upsert(unsaved: SalestaxrateRow)(implicit c: Connection): SalestaxrateRow = { map.put(unsaved.salestaxrateid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala deleted file mode 100644 index 116ca9b8e3..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salestaxrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalestaxrateStructure[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) - extends Relation[SalestaxrateFields, SalestaxrateRow, Row] - with SalestaxrateFields[Row] { outer => - - override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): SalestaxrateStructure[NewRow] = - new SalestaxrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala index 79912180ae..7262098e8c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesterritoryFields[Row] { val territoryid: IdField[SalesterritoryId, Row] @@ -26,5 +28,32 @@ trait SalesterritoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryFields extends SalesterritoryStructure[SalesterritoryRow](None, identity, (_, x) => x) +object SalesterritoryFields { + val structure: Relation[SalesterritoryFields, SalesterritoryRow, SalesterritoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) + extends Relation[SalesterritoryFields, SalesterritoryRow, Row] { + + override val fields: SalesterritoryFields[Row] = new SalesterritoryFields[Row] { + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala index b14d0f93da..6789cc2fcc 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala @@ -31,7 +31,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { SQL"""delete from sales.salesterritory where "territoryid" = ${ParameterValue(territoryid, null, SalesterritoryId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilder("sales.salesterritory", SalesterritoryFields) + DeleteBuilder("sales.salesterritory", SalesterritoryFields.structure) } override def insert(unsaved: SalesterritoryRow)(implicit c: Connection): SalesterritoryRow = { SQL"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") @@ -99,7 +99,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { streamingInsert(s"""COPY sales.salesterritory("name", "countryregioncode", "group", "territoryid", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesterritoryRowUnsaved.text, c) } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderSql("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.rowParser) + SelectBuilderSql("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesterritoryRow] = { SQL"""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text @@ -135,7 +135,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilder("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.rowParser) + UpdateBuilder("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.rowParser) } override def upsert(unsaved: SalesterritoryRow)(implicit c: Connection): SalesterritoryRow = { SQL"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala index d8514214f0..71bb902de4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala @@ -25,7 +25,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester map.remove(territoryid).isDefined } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryRow)(implicit c: Connection): SalesterritoryRow = { val _ = if (map.contains(unsaved.territoryid)) @@ -53,7 +53,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester unsaved.size.toLong } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderMock(SalesterritoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesterritoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesterritoryRow] = { map.values.toList @@ -74,7 +74,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester } } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryRow)(implicit c: Connection): SalesterritoryRow = { map.put(unsaved.territoryid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala deleted file mode 100644 index 9b43b2d769..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesterritoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) - extends Relation[SalesterritoryFields, SalesterritoryRow, Row] - with SalesterritoryFields[Row] { outer => - - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): SalesterritoryStructure[NewRow] = - new SalesterritoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala index 20865db45f..5e9711c5fb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesterritoryhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -23,5 +25,28 @@ trait SalesterritoryhistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryhistoryFields extends SalesterritoryhistoryStructure[SalesterritoryhistoryRow](None, identity, (_, x) => x) +object SalesterritoryhistoryFields { + val structure: Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, SalesterritoryhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) + extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] { + + override val fields: SalesterritoryhistoryFields[Row] = new SalesterritoryhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala index 6b45883f77..c90306650b 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala @@ -31,7 +31,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { SQL"""delete from sales.salesterritoryhistory where "businessentityid" = ${ParameterValue(compositeId.businessentityid, null, BusinessentityId.toStatement)} AND "startdate" = ${ParameterValue(compositeId.startdate, null, TypoLocalDateTime.toStatement)} AND "territoryid" = ${ParameterValue(compositeId.territoryid, null, SalesterritoryId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields) + DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure) } override def insert(unsaved: SalesterritoryhistoryRow)(implicit c: Connection): SalesterritoryhistoryRow = { SQL"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") @@ -80,7 +80,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { streamingInsert(s"""COPY sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesterritoryhistoryRowUnsaved.text, c) } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.rowParser) + SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.rowParser) } override def selectAll(implicit c: Connection): List[SalesterritoryhistoryRow] = { SQL"""select "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text @@ -103,7 +103,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.rowParser) + UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.rowParser) } override def upsert(unsaved: SalesterritoryhistoryRow)(implicit c: Connection): SalesterritoryhistoryRow = { SQL"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala index 4d8cd58bc9..ab4b900a27 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala @@ -25,7 +25,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns map.remove(compositeId).isDefined } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryhistoryRow)(implicit c: Connection): SalesterritoryhistoryRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns unsaved.size.toLong } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderMock(SalesterritoryhistoryFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SalesterritoryhistoryFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SalesterritoryhistoryRow] = { map.values.toList @@ -71,7 +71,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns } } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryhistoryRow)(implicit c: Connection): SalesterritoryhistoryRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala deleted file mode 100644 index a8d599c781..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritoryhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesterritoryhistoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) - extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] - with SalesterritoryhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): SalesterritoryhistoryStructure[NewRow] = - new SalesterritoryhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala index 74332491f5..af2007ec4a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala @@ -10,7 +10,9 @@ package shoppingcartitem import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShoppingcartitemFields[Row] { val shoppingcartitemid: IdField[ShoppingcartitemId, Row] @@ -20,5 +22,28 @@ trait ShoppingcartitemFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShoppingcartitemFields extends ShoppingcartitemStructure[ShoppingcartitemRow](None, identity, (_, x) => x) +object ShoppingcartitemFields { + val structure: Relation[ShoppingcartitemFields, ShoppingcartitemRow, ShoppingcartitemRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) + extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] { + + override val fields: ShoppingcartitemFields[Row] = new ShoppingcartitemFields[Row] { + override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala index 32e2f32d92..2c1617e84c 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala @@ -29,7 +29,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { SQL"""delete from sales.shoppingcartitem where "shoppingcartitemid" = ${ParameterValue(shoppingcartitemid, null, ShoppingcartitemId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields) + DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure) } override def insert(unsaved: ShoppingcartitemRow)(implicit c: Connection): ShoppingcartitemRow = { SQL"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") @@ -84,7 +84,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { streamingInsert(s"""COPY sales.shoppingcartitem("shoppingcartid", "productid", "shoppingcartitemid", "quantity", "datecreated", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShoppingcartitemRowUnsaved.text, c) } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.rowParser) + SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.rowParser) } override def selectAll(implicit c: Connection): List[ShoppingcartitemRow] = { SQL"""select "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text @@ -116,7 +116,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.rowParser) + UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.rowParser) } override def upsert(unsaved: ShoppingcartitemRow)(implicit c: Connection): ShoppingcartitemRow = { SQL"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala index 8e2a783b92..e7fe90a392 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala @@ -25,7 +25,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop map.remove(shoppingcartitemid).isDefined } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields, map) + DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields.structure.fields, map) } override def insert(unsaved: ShoppingcartitemRow)(implicit c: Connection): ShoppingcartitemRow = { val _ = if (map.contains(unsaved.shoppingcartitemid)) @@ -53,7 +53,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop unsaved.size.toLong } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderMock(ShoppingcartitemFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(ShoppingcartitemFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[ShoppingcartitemRow] = { map.values.toList @@ -74,7 +74,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop } } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields, map) + UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields.structure.fields, map) } override def upsert(unsaved: ShoppingcartitemRow)(implicit c: Connection): ShoppingcartitemRow = { map.put(unsaved.shoppingcartitemid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala deleted file mode 100644 index d6abe08ac0..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package shoppingcartitem - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShoppingcartitemStructure[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) - extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] - with ShoppingcartitemFields[Row] { outer => - - override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): ShoppingcartitemStructure[NewRow] = - new ShoppingcartitemStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala index 4df6434691..6eb482dbc6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala @@ -10,8 +10,10 @@ package specialoffer import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpecialofferFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -26,5 +28,33 @@ trait SpecialofferFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferFields extends SpecialofferStructure[SpecialofferRow](None, identity, (_, x) => x) +object SpecialofferFields { + val structure: Relation[SpecialofferFields, SpecialofferRow, SpecialofferRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) + extends Relation[SpecialofferFields, SpecialofferRow, Row] { + + override val fields: SpecialofferFields[Row] = new SpecialofferFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala index 2890d89dcf..a3867f9776 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala @@ -30,7 +30,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { SQL"""delete from sales.specialoffer where "specialofferid" = ${ParameterValue(specialofferid, null, SpecialofferId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilder("sales.specialoffer", SpecialofferFields) + DeleteBuilder("sales.specialoffer", SpecialofferFields.structure) } override def insert(unsaved: SpecialofferRow)(implicit c: Connection): SpecialofferRow = { SQL"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") @@ -93,7 +93,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { streamingInsert(s"""COPY sales.specialoffer("description", "type", "category", "startdate", "enddate", "maxqty", "specialofferid", "discountpct", "minqty", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SpecialofferRowUnsaved.text, c) } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderSql("sales.specialoffer", SpecialofferFields, SpecialofferRow.rowParser) + SelectBuilderSql("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.rowParser) } override def selectAll(implicit c: Connection): List[SpecialofferRow] = { SQL"""select "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text @@ -130,7 +130,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilder("sales.specialoffer", SpecialofferFields, SpecialofferRow.rowParser) + UpdateBuilder("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.rowParser) } override def upsert(unsaved: SpecialofferRow)(implicit c: Connection): SpecialofferRow = { SQL"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala index ee870b13db..aee574cd74 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala @@ -25,7 +25,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer map.remove(specialofferid).isDefined } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferFields.structure.fields, map) } override def insert(unsaved: SpecialofferRow)(implicit c: Connection): SpecialofferRow = { val _ = if (map.contains(unsaved.specialofferid)) @@ -53,7 +53,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer unsaved.size.toLong } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderMock(SpecialofferFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SpecialofferFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SpecialofferRow] = { map.values.toList @@ -74,7 +74,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer } } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferFields.structure.fields, map) } override def upsert(unsaved: SpecialofferRow)(implicit c: Connection): SpecialofferRow = { map.put(unsaved.specialofferid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala deleted file mode 100644 index d642590d55..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialoffer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpecialofferStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) - extends Relation[SpecialofferFields, SpecialofferRow, Row] - with SpecialofferFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): SpecialofferStructure[NewRow] = - new SpecialofferStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala index 76e69fd6ee..c6c2055c28 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SpecialofferproductFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -20,5 +22,26 @@ trait SpecialofferproductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferproductFields extends SpecialofferproductStructure[SpecialofferproductRow](None, identity, (_, x) => x) +object SpecialofferproductFields { + val structure: Relation[SpecialofferproductFields, SpecialofferproductRow, SpecialofferproductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) + extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] { + + override val fields: SpecialofferproductFields[Row] = new SpecialofferproductFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala index ab0c4e25b0..03256eb06a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala @@ -30,7 +30,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { SQL"""delete from sales.specialofferproduct where "specialofferid" = ${ParameterValue(compositeId.specialofferid, null, SpecialofferId.toStatement)} AND "productid" = ${ParameterValue(compositeId.productid, null, ProductId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields) + DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields.structure) } override def insert(unsaved: SpecialofferproductRow)(implicit c: Connection): SpecialofferproductRow = { SQL"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") @@ -77,7 +77,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { streamingInsert(s"""COPY sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SpecialofferproductRowUnsaved.text, c) } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.rowParser) + SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.rowParser) } override def selectAll(implicit c: Connection): List[SpecialofferproductRow] = { SQL"""select "specialofferid", "productid", "rowguid", "modifieddate"::text @@ -99,7 +99,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.rowParser) + UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.rowParser) } override def upsert(unsaved: SpecialofferproductRow)(implicit c: Connection): SpecialofferproductRow = { SQL"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala index 67b19d2cf5..e99b37802d 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala @@ -25,7 +25,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved map.remove(compositeId).isDefined } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields.structure.fields, map) } override def insert(unsaved: SpecialofferproductRow)(implicit c: Connection): SpecialofferproductRow = { val _ = if (map.contains(unsaved.compositeId)) @@ -53,7 +53,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved unsaved.size.toLong } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderMock(SpecialofferproductFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(SpecialofferproductFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[SpecialofferproductRow] = { map.values.toList @@ -71,7 +71,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved } } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields.structure.fields, map) } override def upsert(unsaved: SpecialofferproductRow)(implicit c: Connection): SpecialofferproductRow = { map.put(unsaved.compositeId, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala deleted file mode 100644 index 4acd01c6bb..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialofferproduct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SpecialofferproductStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) - extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] - with SpecialofferproductFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): SpecialofferproductStructure[NewRow] = - new SpecialofferproductStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala index f5e0398065..2164840a07 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala @@ -13,8 +13,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait StoreFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait StoreFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StoreFields extends StoreStructure[StoreRow](None, identity, (_, x) => x) +object StoreFields { + val structure: Relation[StoreFields, StoreRow, StoreRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) + extends Relation[StoreFields, StoreRow, Row] { + + override val fields: StoreFields[Row] = new StoreFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala index cc35346b34..373d3f79eb 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala @@ -32,7 +32,7 @@ class StoreRepoImpl extends StoreRepo { SQL"""delete from sales.store where "businessentityid" = ${ParameterValue(businessentityid, null, BusinessentityId.toStatement)}""".executeUpdate() > 0 } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilder("sales.store", StoreFields) + DeleteBuilder("sales.store", StoreFields.structure) } override def insert(unsaved: StoreRow)(implicit c: Connection): StoreRow = { SQL"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") @@ -81,7 +81,7 @@ class StoreRepoImpl extends StoreRepo { streamingInsert(s"""COPY sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(StoreRowUnsaved.text, c) } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderSql("sales.store", StoreFields, StoreRow.rowParser) + SelectBuilderSql("sales.store", StoreFields.structure, StoreRow.rowParser) } override def selectAll(implicit c: Connection): List[StoreRow] = { SQL"""select "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text @@ -113,7 +113,7 @@ class StoreRepoImpl extends StoreRepo { """.executeUpdate() > 0 } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilder("sales.store", StoreFields, StoreRow.rowParser) + UpdateBuilder("sales.store", StoreFields.structure, StoreRow.rowParser) } override def upsert(unsaved: StoreRow)(implicit c: Connection): StoreRow = { SQL"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala index f7ae84f937..1c59e25f46 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala @@ -26,7 +26,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], map.remove(businessentityid).isDefined } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilderMock(DeleteParams.empty, StoreFields, map) + DeleteBuilderMock(DeleteParams.empty, StoreFields.structure.fields, map) } override def insert(unsaved: StoreRow)(implicit c: Connection): StoreRow = { val _ = if (map.contains(unsaved.businessentityid)) @@ -54,7 +54,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], unsaved.size.toLong } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderMock(StoreFields, () => map.values.toList, SelectParams.empty) + SelectBuilderMock(StoreFields.structure, () => map.values.toList, SelectParams.empty) } override def selectAll(implicit c: Connection): List[StoreRow] = { map.values.toList @@ -75,7 +75,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], } } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilderMock(UpdateParams.empty, StoreFields, map) + UpdateBuilderMock(UpdateParams.empty, StoreFields.structure.fields, map) } override def upsert(unsaved: StoreRow)(implicit c: Connection): StoreRow = { map.put(unsaved.businessentityid, unsaved): @nowarn diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala deleted file mode 100644 index 45fddb7785..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package store - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class StoreStructure[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) - extends Relation[StoreFields, StoreRow, Row] - with StoreFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): StoreStructure[NewRow] = - new StoreStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala index 6476a979fa..8217897f26 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VindividualcustomerViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VindividualcustomerViewFields[Row] { val countryregionname: Field[Name, Row] val demographics: OptField[TypoXml, Row] } -object VindividualcustomerViewFields extends VindividualcustomerViewStructure[VindividualcustomerViewRow](None, identity, (_, x) => x) +object VindividualcustomerViewFields { + val structure: Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, VindividualcustomerViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) + extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] { + + override val fields: VindividualcustomerViewFields[Row] = new VindividualcustomerViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.demographics) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala index 0f3a928f0a..4720a39c6a 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VindividualcustomerViewRepoImpl extends VindividualcustomerViewRepo { override def select: SelectBuilder[VindividualcustomerViewFields, VindividualcustomerViewRow] = { - SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields, VindividualcustomerViewRow.rowParser) + SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields.structure, VindividualcustomerViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VindividualcustomerViewRow] = { SQL"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "demographics" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala deleted file mode 100644 index 66a9abfd80..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vindividualcustomer - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VindividualcustomerViewStructure[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) - extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] - with VindividualcustomerViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, demographics) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): VindividualcustomerViewStructure[NewRow] = - new VindividualcustomerViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala index 65ad2184a6..b13a6ac7a8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDate import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VpersondemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,35 @@ trait VpersondemographicsViewFields[Row] { val homeownerflag: OptField[Boolean, Row] val numbercarsowned: OptField[Int, Row] } -object VpersondemographicsViewFields extends VpersondemographicsViewStructure[VpersondemographicsViewRow](None, identity, (_, x) => x) +object VpersondemographicsViewFields { + val structure: Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, VpersondemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) + extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] { + + override val fields: VpersondemographicsViewFields[Row] = new VpersondemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) + override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) + override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) + override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) + override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) + override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) + override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) + override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) + override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.totalpurchaseytd, fields.datefirstpurchase, fields.birthdate, fields.maritalstatus, fields.yearlyincome, fields.gender, fields.totalchildren, fields.numberchildrenathome, fields.education, fields.occupation, fields.homeownerflag, fields.numbercarsowned) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala index 3e903db3c3..604c216ade 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VpersondemographicsViewRepoImpl extends VpersondemographicsViewRepo { override def select: SelectBuilder[VpersondemographicsViewFields, VpersondemographicsViewRow] = { - SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields, VpersondemographicsViewRow.rowParser) + SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields.structure, VpersondemographicsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VpersondemographicsViewRow] = { SQL"""select "businessentityid", "totalpurchaseytd"::numeric, "datefirstpurchase"::text, "birthdate"::text, "maritalstatus", "yearlyincome", "gender", "totalchildren", "numberchildrenathome", "education", "occupation", "homeownerflag", "numbercarsowned" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala deleted file mode 100644 index 738b9fdca2..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vpersondemographics - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VpersondemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) - extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] - with VpersondemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) - override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) - override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) - override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) - override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) - override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) - override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) - override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) - override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, totalpurchaseytd, datefirstpurchase, birthdate, maritalstatus, yearlyincome, gender, totalchildren, numberchildrenathome, education, occupation, homeownerflag, numbercarsowned) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): VpersondemographicsViewStructure[NewRow] = - new VpersondemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala index 4d1274938b..11e54139fd 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -38,5 +40,44 @@ trait VsalespersonViewFields[Row] { val salesytd: Field[BigDecimal, Row] val saleslastyear: Field[BigDecimal, Row] } -object VsalespersonViewFields extends VsalespersonViewStructure[VsalespersonViewRow](None, identity, (_, x) => x) +object VsalespersonViewFields { + val structure: Relation[VsalespersonViewFields, VsalespersonViewRow, VsalespersonViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) + extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] { + + override val fields: VsalespersonViewFields[Row] = new VsalespersonViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) + override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.territoryname, fields.territorygroup, fields.salesquota, fields.salesytd, fields.saleslastyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala index 2c8a0d7321..42e5c2a7d2 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonViewRepoImpl extends VsalespersonViewRepo { override def select: SelectBuilder[VsalespersonViewFields, VsalespersonViewRow] = { - SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields, VsalespersonViewRow.rowParser) + SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields.structure, VsalespersonViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VsalespersonViewRow] = { SQL"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "territoryname", "territorygroup", "salesquota", "salesytd", "saleslastyear" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala deleted file mode 100644 index 7af84b60ed..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala +++ /dev/null @@ -1,51 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalesperson - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) - extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] - with VsalespersonViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) - override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, territoryname, territorygroup, salesquota, salesytd, saleslastyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): VsalespersonViewStructure[NewRow] = - new VsalespersonViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala index 2eb635438a..f636046ef3 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala @@ -7,7 +7,9 @@ package adventureworks package sales package vsalespersonsalesbyfiscalyears +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val SalesPersonID: OptField[Int, Row] @@ -18,5 +20,29 @@ trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val `2013`: OptField[BigDecimal, Row] val `2014`: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsViewFields extends VsalespersonsalesbyfiscalyearsViewStructure[VsalespersonsalesbyfiscalyearsViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, VsalespersonsalesbyfiscalyearsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsViewFields[Row] = new VsalespersonsalesbyfiscalyearsViewFields[Row] { + override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) + override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) + override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) + override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) + override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) + override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) + override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.SalesPersonID, fields.FullName, fields.JobTitle, fields.SalesTerritory, fields.`2012`, fields.`2013`, fields.`2014`) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala index df70bf8db8..201451d8f8 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonsalesbyfiscalyearsViewRepoImpl extends VsalespersonsalesbyfiscalyearsViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow.rowParser) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields.structure, VsalespersonsalesbyfiscalyearsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VsalespersonsalesbyfiscalyearsViewRow] = { SQL"""select "SalesPersonID", "FullName", "JobTitle", "SalesTerritory", "2012", "2013", "2014" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala deleted file mode 100644 index 3485f8108f..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyears - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] - with VsalespersonsalesbyfiscalyearsViewFields[Row] { outer => - - override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) - override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) - override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) - override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) - override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) - override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) - override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](SalesPersonID, FullName, JobTitle, SalesTerritory, `2012`, `2013`, `2014`) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): VsalespersonsalesbyfiscalyearsViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala index c871064e8e..491bd9b9f7 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala @@ -10,7 +10,9 @@ package vsalespersonsalesbyfiscalyearsdata import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salespersonid: OptField[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salestotal: OptField[BigDecimal, Row] val fiscalyear: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsdataViewFields extends VsalespersonsalesbyfiscalyearsdataViewStructure[VsalespersonsalesbyfiscalyearsdataViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsdataViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, VsalespersonsalesbyfiscalyearsdataViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsdataViewFields[Row] = new VsalespersonsalesbyfiscalyearsdataViewFields[Row] { + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) + override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) + override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salespersonid, fields.fullname, fields.jobtitle, fields.salesterritory, fields.salestotal, fields.fiscalyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala index 22cb28b4d6..5aa7c61131 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonsalesbyfiscalyearsdataViewRepoImpl extends VsalespersonsalesbyfiscalyearsdataViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow.rowParser) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields.structure, VsalespersonsalesbyfiscalyearsdataViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VsalespersonsalesbyfiscalyearsdataViewRow] = { SQL"""select "salespersonid", "fullname", "jobtitle", "salesterritory", "salestotal", "fiscalyear" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala deleted file mode 100644 index 98db3bcd8b..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyearsdata - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsdataViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] - with VsalespersonsalesbyfiscalyearsdataViewFields[Row] { outer => - - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) - override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) - override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salespersonid, fullname, jobtitle, salesterritory, salestotal, fiscalyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): VsalespersonsalesbyfiscalyearsdataViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsdataViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala index 5b34fb540b..cf260014a4 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vstorewithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VstorewithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VstorewithaddressesViewFields extends VstorewithaddressesViewStructure[VstorewithaddressesViewRow](None, identity, (_, x) => x) +object VstorewithaddressesViewFields { + val structure: Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, VstorewithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) + extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] { + + override val fields: VstorewithaddressesViewFields[Row] = new VstorewithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala index 759f411748..1ad7643bee 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VstorewithaddressesViewRepoImpl extends VstorewithaddressesViewRepo { override def select: SelectBuilder[VstorewithaddressesViewFields, VstorewithaddressesViewRow] = { - SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields, VstorewithaddressesViewRow.rowParser) + SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields.structure, VstorewithaddressesViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VstorewithaddressesViewRow] = { SQL"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala deleted file mode 100644 index 54c832e3d4..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) - extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] - with VstorewithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): VstorewithaddressesViewStructure[NewRow] = - new VstorewithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala index 39b7c010bf..9a27788ee6 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VstorewithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VstorewithcontactsViewFields extends VstorewithcontactsViewStructure[VstorewithcontactsViewRow](None, identity, (_, x) => x) +object VstorewithcontactsViewFields { + val structure: Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, VstorewithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) + extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] { + + override val fields: VstorewithcontactsViewFields[Row] = new VstorewithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala index 9ea67be8c9..b986968965 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VstorewithcontactsViewRepoImpl extends VstorewithcontactsViewRepo { override def select: SelectBuilder[VstorewithcontactsViewFields, VstorewithcontactsViewRow] = { - SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields, VstorewithcontactsViewRow.rowParser) + SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields.structure, VstorewithcontactsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VstorewithcontactsViewRow] = { SQL"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala deleted file mode 100644 index 0e2624e4a4..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) - extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] - with VstorewithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): VstorewithcontactsViewStructure[NewRow] = - new VstorewithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala index c3d98a97b6..ca48f53127 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithdemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,34 @@ trait VstorewithdemographicsViewFields[Row] { val Internet: OptField[/* max 30 chars */ String, Row] val NumberEmployees: OptField[Int, Row] } -object VstorewithdemographicsViewFields extends VstorewithdemographicsViewStructure[VstorewithdemographicsViewRow](None, identity, (_, x) => x) +object VstorewithdemographicsViewFields { + val structure: Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, VstorewithdemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) + extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] { + + override val fields: VstorewithdemographicsViewFields[Row] = new VstorewithdemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) + override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) + override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) + override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) + override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) + override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) + override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) + override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) + override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) + override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.AnnualSales, fields.AnnualRevenue, fields.BankName, fields.BusinessType, fields.YearOpened, fields.Specialty, fields.SquareFeet, fields.Brands, fields.Internet, fields.NumberEmployees) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala index 5d73076e69..ffeeb452f0 100644 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala +++ b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala @@ -14,7 +14,7 @@ import typo.dsl.SelectBuilderSql class VstorewithdemographicsViewRepoImpl extends VstorewithdemographicsViewRepo { override def select: SelectBuilder[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow] = { - SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields, VstorewithdemographicsViewRow.rowParser) + SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields.structure, VstorewithdemographicsViewRow.rowParser) } override def selectAll(implicit c: Connection): List[VstorewithdemographicsViewRow] = { SQL"""select "businessentityid", "name", "AnnualSales"::numeric, "AnnualRevenue"::numeric, "BankName", "BusinessType", "YearOpened", "Specialty", "SquareFeet", "Brands", "Internet", "NumberEmployees" diff --git a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala b/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala deleted file mode 100644 index e9b17f1121..0000000000 --- a/typo-tester-anorm/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithdemographics - -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithdemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) - extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] - with VstorewithdemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) - override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) - override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) - override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) - override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) - override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) - override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) - override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) - override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) - override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, AnnualSales, AnnualRevenue, BankName, BusinessType, YearOpened, Specialty, SquareFeet, Brands, Internet, NumberEmployees) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): VstorewithdemographicsViewStructure[NewRow] = - new VstorewithdemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala index 720ed330a1..9cb3325aa1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.department.DepartmentId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait DViewFields[Row] { val id: Field[DepartmentId, Row] @@ -19,5 +21,27 @@ trait DViewFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala index 33445c02a6..f4efaf7d5c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("hr.d", DViewFields, DViewRow.read) + SelectBuilderSql("hr.d", DViewFields.structure, DViewRow.read) } override def selectAll: Stream[ConnectionIO, DViewRow] = { sql"""select "id", "departmentid", "name", "groupname", "modifieddate"::text from hr.d""".query(DViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala deleted file mode 100644 index ab458605c8..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package d - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala index 9557d3f03a..1d5e36b1af 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -34,5 +36,38 @@ trait EViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala index b2e0f84b34..68fa0f6471 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("hr.e", EViewFields, EViewRow.read) + SelectBuilderSql("hr.e", EViewFields.structure, EViewRow.read) } override def selectAll: Stream[ConnectionIO, EViewRow] = { sql"""select "id", "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" from hr.e""".query(EViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala deleted file mode 100644 index 2a50379009..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package e - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala index 057cb8089a..d9fbd5167d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EdhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait EdhViewFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EdhViewFields extends EdhViewStructure[EdhViewRow](None, identity, (_, x) => x) +object EdhViewFields { + val structure: Relation[EdhViewFields, EdhViewRow, EdhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) + extends Relation[EdhViewFields, EdhViewRow, Row] { + + override val fields: EdhViewFields[Row] = new EdhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala index 2f80392662..8e6a38349d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class EdhViewRepoImpl extends EdhViewRepo { override def select: SelectBuilder[EdhViewFields, EdhViewRow] = { - SelectBuilderSql("hr.edh", EdhViewFields, EdhViewRow.read) + SelectBuilderSql("hr.edh", EdhViewFields.structure, EdhViewRow.read) } override def selectAll: Stream[ConnectionIO, EdhViewRow] = { sql"""select "id", "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text from hr.edh""".query(EdhViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala deleted file mode 100644 index 4ea9c21a49..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package edh - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EdhViewStructure[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) - extends Relation[EdhViewFields, EdhViewRow, Row] - with EdhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): EdhViewStructure[NewRow] = - new EdhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala index 048512420d..c8670a7fe5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait EphViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait EphViewFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EphViewFields extends EphViewStructure[EphViewRow](None, identity, (_, x) => x) +object EphViewFields { + val structure: Relation[EphViewFields, EphViewRow, EphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) + extends Relation[EphViewFields, EphViewRow, Row] { + + override val fields: EphViewFields[Row] = new EphViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala index 02185af35f..7ea01e5d63 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class EphViewRepoImpl extends EphViewRepo { override def select: SelectBuilder[EphViewFields, EphViewRow] = { - SelectBuilderSql("hr.eph", EphViewFields, EphViewRow.read) + SelectBuilderSql("hr.eph", EphViewFields.structure, EphViewRow.read) } override def selectAll: Stream[ConnectionIO, EphViewRow] = { sql"""select "id", "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text from hr.eph""".query(EphViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala deleted file mode 100644 index 729f28f6bb..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package eph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class EphViewStructure[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) - extends Relation[EphViewFields, EphViewRow, Row] - with EphViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): EphViewStructure[NewRow] = - new EphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala index 1403c7be19..0fdb335f9b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JcViewFields[Row] { val id: Field[JobcandidateId, Row] @@ -21,5 +23,27 @@ trait JcViewFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JcViewFields extends JcViewStructure[JcViewRow](None, identity, (_, x) => x) +object JcViewFields { + val structure: Relation[JcViewFields, JcViewRow, JcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) + extends Relation[JcViewFields, JcViewRow, Row] { + + override val fields: JcViewFields[Row] = new JcViewFields[Row] { + override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala index 8799cd1940..e3f2b77cab 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class JcViewRepoImpl extends JcViewRepo { override def select: SelectBuilder[JcViewFields, JcViewRow] = { - SelectBuilderSql("hr.jc", JcViewFields, JcViewRow.read) + SelectBuilderSql("hr.jc", JcViewFields.structure, JcViewRow.read) } override def selectAll: Stream[ConnectionIO, JcViewRow] = { sql"""select "id", "jobcandidateid", "businessentityid", "resume", "modifieddate"::text from hr.jc""".query(JcViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala deleted file mode 100644 index fa1d098dfb..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package jc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JcViewStructure[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) - extends Relation[JcViewFields, JcViewRow, Row] - with JcViewFields[Row] { outer => - - override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): JcViewStructure[NewRow] = - new JcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala index e163d56da1..8fc6d1f010 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoLocalTime import adventureworks.humanresources.shift.ShiftId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[ShiftId, Row] @@ -21,5 +23,28 @@ trait SViewFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala index 3781566744..dbb52d6f78 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("hr.s", SViewFields, SViewRow.read) + SelectBuilderSql("hr.s", SViewFields.structure, SViewRow.read) } override def selectAll: Stream[ConnectionIO, SViewRow] = { sql"""select "id", "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text from hr.s""".query(SViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala deleted file mode 100644 index e3a4cd57a3..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.humanresources.shift.ShiftId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala index d5c56ff6f0..910a3a1b0c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala @@ -10,7 +10,9 @@ package department import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait DepartmentFields[Row] { val departmentid: IdField[DepartmentId, Row] @@ -18,5 +20,26 @@ trait DepartmentFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DepartmentFields extends DepartmentStructure[DepartmentRow](None, identity, (_, x) => x) +object DepartmentFields { + val structure: Relation[DepartmentFields, DepartmentRow, DepartmentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) + extends Relation[DepartmentFields, DepartmentRow, Row] { + + override val fields: DepartmentFields[Row] = new DepartmentFields[Row] { + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala index 668032a27c..adf954dea6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala @@ -27,7 +27,7 @@ class DepartmentRepoImpl extends DepartmentRepo { sql"""delete from humanresources.department where "departmentid" = ${fromWrite(departmentid)(Write.fromPut(DepartmentId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilder("humanresources.department", DepartmentFields) + DeleteBuilder("humanresources.department", DepartmentFields.structure) } override def insert(unsaved: DepartmentRow): ConnectionIO[DepartmentRow] = { sql"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") @@ -71,7 +71,7 @@ class DepartmentRepoImpl extends DepartmentRepo { new FragmentOps(sql"""COPY humanresources.department("name", "groupname", "departmentid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(DepartmentRowUnsaved.text) } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderSql("humanresources.department", DepartmentFields, DepartmentRow.read) + SelectBuilderSql("humanresources.department", DepartmentFields.structure, DepartmentRow.read) } override def selectAll: Stream[ConnectionIO, DepartmentRow] = { sql"""select "departmentid", "name", "groupname", "modifieddate"::text from humanresources.department""".query(DepartmentRow.read).stream @@ -94,7 +94,7 @@ class DepartmentRepoImpl extends DepartmentRepo { .map(_ > 0) } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilder("humanresources.department", DepartmentFields, DepartmentRow.read) + UpdateBuilder("humanresources.department", DepartmentFields.structure, DepartmentRow.read) } override def upsert(unsaved: DepartmentRow): ConnectionIO[DepartmentRow] = { sql"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala index d6f4ef9308..8cc33eff4f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala @@ -27,7 +27,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], delay(map.remove(departmentid).isDefined) } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilderMock(DeleteParams.empty, DepartmentFields, map) + DeleteBuilderMock(DeleteParams.empty, DepartmentFields.structure.fields, map) } override def insert(unsaved: DepartmentRow): ConnectionIO[DepartmentRow] = { delay { @@ -65,7 +65,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], } } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderMock(DepartmentFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(DepartmentFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, DepartmentRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], } } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilderMock(UpdateParams.empty, DepartmentFields, map) + UpdateBuilderMock(UpdateParams.empty, DepartmentFields.structure.fields, map) } override def upsert(unsaved: DepartmentRow): ConnectionIO[DepartmentRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala deleted file mode 100644 index 50ec794eff..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package department - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class DepartmentStructure[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) - extends Relation[DepartmentFields, DepartmentRow, Row] - with DepartmentFields[Row] { outer => - - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): DepartmentStructure[NewRow] = - new DepartmentStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala index 95087474b4..0547baa076 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeeFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -34,5 +36,37 @@ trait EmployeeFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EmployeeFields extends EmployeeStructure[EmployeeRow](None, identity, (_, x) => x) +object EmployeeFields { + val structure: Relation[EmployeeFields, EmployeeRow, EmployeeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) + extends Relation[EmployeeFields, EmployeeRow, Row] { + + override val fields: EmployeeFields[Row] = new EmployeeFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 8db9f7b48f..7c52214a6b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -32,7 +32,7 @@ class EmployeeRepoImpl extends EmployeeRepo { sql"""delete from humanresources.employee where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilder("humanresources.employee", EmployeeFields) + DeleteBuilder("humanresources.employee", EmployeeFields.structure) } override def insert(unsaved: EmployeeRow): ConnectionIO[EmployeeRow] = { sql"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") @@ -102,7 +102,7 @@ class EmployeeRepoImpl extends EmployeeRepo { new FragmentOps(sql"""COPY humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(EmployeeRowUnsaved.text) } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderSql("humanresources.employee", EmployeeFields, EmployeeRow.read) + SelectBuilderSql("humanresources.employee", EmployeeFields.structure, EmployeeRow.read) } override def selectAll: Stream[ConnectionIO, EmployeeRow] = { sql"""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" from humanresources.employee""".query(EmployeeRow.read).stream @@ -136,7 +136,7 @@ class EmployeeRepoImpl extends EmployeeRepo { .map(_ > 0) } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilder("humanresources.employee", EmployeeFields, EmployeeRow.read) + UpdateBuilder("humanresources.employee", EmployeeFields.structure, EmployeeRow.read) } override def upsert(unsaved: EmployeeRow): ConnectionIO[EmployeeRow] = { sql"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala index eaabe9c4a1..3ce4197e08 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala @@ -28,7 +28,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeeFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeeFields.structure.fields, map) } override def insert(unsaved: EmployeeRow): ConnectionIO[EmployeeRow] = { delay { @@ -66,7 +66,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], } } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderMock(EmployeeFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(EmployeeFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, EmployeeRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], } } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeeFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeeFields.structure.fields, map) } override def upsert(unsaved: EmployeeRow): ConnectionIO[EmployeeRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala deleted file mode 100644 index 2193c5da6e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employee - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeeStructure[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) - extends Relation[EmployeeFields, EmployeeRow, Row] - with EmployeeFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): EmployeeStructure[NewRow] = - new EmployeeStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala index e3dd76934a..2a822b24e7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala @@ -13,8 +13,10 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeedepartmenthistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait EmployeedepartmenthistoryFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeedepartmenthistoryFields extends EmployeedepartmenthistoryStructure[EmployeedepartmenthistoryRow](None, identity, (_, x) => x) +object EmployeedepartmenthistoryFields { + val structure: Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, EmployeedepartmenthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) + extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] { + + override val fields: EmployeedepartmenthistoryFields[Row] = new EmployeedepartmenthistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala index 9d040da64d..28f1170dc4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala @@ -30,7 +30,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { sql"""delete from humanresources.employeedepartmenthistory where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "startdate" = ${fromWrite(compositeId.startdate)(Write.fromPut(TypoLocalDate.put))} AND "departmentid" = ${fromWrite(compositeId.departmentid)(Write.fromPut(DepartmentId.put))} AND "shiftid" = ${fromWrite(compositeId.shiftid)(Write.fromPut(ShiftId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields) + DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure) } override def insert(unsaved: EmployeedepartmenthistoryRow): ConnectionIO[EmployeedepartmenthistoryRow] = { sql"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") @@ -73,7 +73,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { new FragmentOps(sql"""COPY humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(EmployeedepartmenthistoryRowUnsaved.text) } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.read) + SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.read) } override def selectAll: Stream[ConnectionIO, EmployeedepartmenthistoryRow] = { sql"""select "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text from humanresources.employeedepartmenthistory""".query(EmployeedepartmenthistoryRow.read).stream @@ -92,7 +92,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.read) + UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.read) } override def upsert(unsaved: EmployeedepartmenthistoryRow): ConnectionIO[EmployeedepartmenthistoryRow] = { sql"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala index 721e238ec2..972ebfe501 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala @@ -27,7 +27,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def insert(unsaved: EmployeedepartmenthistoryRow): ConnectionIO[EmployeedepartmenthistoryRow] = { delay { @@ -65,7 +65,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto } } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderMock(EmployeedepartmenthistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(EmployeedepartmenthistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, EmployeedepartmenthistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto } } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeedepartmenthistoryRow): ConnectionIO[EmployeedepartmenthistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala deleted file mode 100644 index 7c99ac336d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeedepartmenthistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) - extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] - with EmployeedepartmenthistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): EmployeedepartmenthistoryStructure[NewRow] = - new EmployeedepartmenthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala index c06bb4aaff..fdce4a482d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait EmployeepayhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait EmployeepayhistoryFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeepayhistoryFields extends EmployeepayhistoryStructure[EmployeepayhistoryRow](None, identity, (_, x) => x) +object EmployeepayhistoryFields { + val structure: Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, EmployeepayhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) + extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] { + + override val fields: EmployeepayhistoryFields[Row] = new EmployeepayhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala index 4049923a05..f0869e7caa 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala @@ -29,7 +29,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { sql"""delete from humanresources.employeepayhistory where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "ratechangedate" = ${fromWrite(compositeId.ratechangedate)(Write.fromPut(TypoLocalDateTime.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields) + DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure) } override def insert(unsaved: EmployeepayhistoryRow): ConnectionIO[EmployeepayhistoryRow] = { sql"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") @@ -71,7 +71,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { new FragmentOps(sql"""COPY humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(EmployeepayhistoryRowUnsaved.text) } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.read) + SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.read) } override def selectAll: Stream[ConnectionIO, EmployeepayhistoryRow] = { sql"""select "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text from humanresources.employeepayhistory""".query(EmployeepayhistoryRow.read).stream @@ -91,7 +91,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.read) + UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.read) } override def upsert(unsaved: EmployeepayhistoryRow): ConnectionIO[EmployeepayhistoryRow] = { sql"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala index 4991cb4946..eb7955a8e4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala @@ -27,7 +27,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def insert(unsaved: EmployeepayhistoryRow): ConnectionIO[EmployeepayhistoryRow] = { delay { @@ -65,7 +65,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, } } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderMock(EmployeepayhistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(EmployeepayhistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, EmployeepayhistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, } } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeepayhistoryRow): ConnectionIO[EmployeepayhistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala deleted file mode 100644 index 6956bed217..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeepayhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class EmployeepayhistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) - extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] - with EmployeepayhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): EmployeepayhistoryStructure[NewRow] = - new EmployeepayhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala index f77da744f2..21169ddc0f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JobcandidateFields[Row] { val jobcandidateid: IdField[JobcandidateId, Row] @@ -20,5 +22,26 @@ trait JobcandidateFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JobcandidateFields extends JobcandidateStructure[JobcandidateRow](None, identity, (_, x) => x) +object JobcandidateFields { + val structure: Relation[JobcandidateFields, JobcandidateRow, JobcandidateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) + extends Relation[JobcandidateFields, JobcandidateRow, Row] { + + override val fields: JobcandidateFields[Row] = new JobcandidateFields[Row] { + override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala index 52702b1f1a..80f9bed238 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala @@ -28,7 +28,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { sql"""delete from humanresources.jobcandidate where "jobcandidateid" = ${fromWrite(jobcandidateid)(Write.fromPut(JobcandidateId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilder("humanresources.jobcandidate", JobcandidateFields) + DeleteBuilder("humanresources.jobcandidate", JobcandidateFields.structure) } override def insert(unsaved: JobcandidateRow): ConnectionIO[JobcandidateRow] = { sql"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") @@ -72,7 +72,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { new FragmentOps(sql"""COPY humanresources.jobcandidate("businessentityid", "resume", "jobcandidateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(JobcandidateRowUnsaved.text) } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.read) + SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.read) } override def selectAll: Stream[ConnectionIO, JobcandidateRow] = { sql"""select "jobcandidateid", "businessentityid", "resume", "modifieddate"::text from humanresources.jobcandidate""".query(JobcandidateRow.read).stream @@ -95,7 +95,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { .map(_ > 0) } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilder("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.read) + UpdateBuilder("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.read) } override def upsert(unsaved: JobcandidateRow): ConnectionIO[JobcandidateRow] = { sql"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala index e41ef42f59..d47ad1329e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala @@ -27,7 +27,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate delay(map.remove(jobcandidateid).isDefined) } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilderMock(DeleteParams.empty, JobcandidateFields, map) + DeleteBuilderMock(DeleteParams.empty, JobcandidateFields.structure.fields, map) } override def insert(unsaved: JobcandidateRow): ConnectionIO[JobcandidateRow] = { delay { @@ -65,7 +65,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate } } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderMock(JobcandidateFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(JobcandidateFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, JobcandidateRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate } } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilderMock(UpdateParams.empty, JobcandidateFields, map) + UpdateBuilderMock(UpdateParams.empty, JobcandidateFields.structure.fields, map) } override def upsert(unsaved: JobcandidateRow): ConnectionIO[JobcandidateRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala deleted file mode 100644 index 067bb2b939..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package jobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JobcandidateStructure[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) - extends Relation[JobcandidateFields, JobcandidateRow, Row] - with JobcandidateFields[Row] { outer => - - override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): JobcandidateStructure[NewRow] = - new JobcandidateStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala index a2fdea72e1..bdcf4f3406 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoLocalTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShiftFields[Row] { val shiftid: IdField[ShiftId, Row] @@ -20,5 +22,27 @@ trait ShiftFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShiftFields extends ShiftStructure[ShiftRow](None, identity, (_, x) => x) +object ShiftFields { + val structure: Relation[ShiftFields, ShiftRow, ShiftRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) + extends Relation[ShiftFields, ShiftRow, Row] { + + override val fields: ShiftFields[Row] = new ShiftFields[Row] { + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala index a320f55428..16b01aeb15 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala @@ -28,7 +28,7 @@ class ShiftRepoImpl extends ShiftRepo { sql"""delete from humanresources.shift where "shiftid" = ${fromWrite(shiftid)(Write.fromPut(ShiftId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilder("humanresources.shift", ShiftFields) + DeleteBuilder("humanresources.shift", ShiftFields.structure) } override def insert(unsaved: ShiftRow): ConnectionIO[ShiftRow] = { sql"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") @@ -73,7 +73,7 @@ class ShiftRepoImpl extends ShiftRepo { new FragmentOps(sql"""COPY humanresources.shift("name", "starttime", "endtime", "shiftid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ShiftRowUnsaved.text) } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderSql("humanresources.shift", ShiftFields, ShiftRow.read) + SelectBuilderSql("humanresources.shift", ShiftFields.structure, ShiftRow.read) } override def selectAll: Stream[ConnectionIO, ShiftRow] = { sql"""select "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text from humanresources.shift""".query(ShiftRow.read).stream @@ -97,7 +97,7 @@ class ShiftRepoImpl extends ShiftRepo { .map(_ > 0) } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilder("humanresources.shift", ShiftFields, ShiftRow.read) + UpdateBuilder("humanresources.shift", ShiftFields.structure, ShiftRow.read) } override def upsert(unsaved: ShiftRow): ConnectionIO[ShiftRow] = { sql"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala index 7f104821a2..4344e1af78 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala @@ -27,7 +27,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], delay(map.remove(shiftid).isDefined) } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilderMock(DeleteParams.empty, ShiftFields, map) + DeleteBuilderMock(DeleteParams.empty, ShiftFields.structure.fields, map) } override def insert(unsaved: ShiftRow): ConnectionIO[ShiftRow] = { delay { @@ -65,7 +65,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], } } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderMock(ShiftFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ShiftFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ShiftRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], } } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilderMock(UpdateParams.empty, ShiftFields, map) + UpdateBuilderMock(UpdateParams.empty, ShiftFields.structure.fields, map) } override def upsert(unsaved: ShiftRow): ConnectionIO[ShiftRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala deleted file mode 100644 index b26d189a1a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package shift - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShiftStructure[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) - extends Relation[ShiftFields, ShiftRow, Row] - with ShiftFields[Row] { outer => - - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): ShiftStructure[NewRow] = - new ShiftStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 1d61296667..1bdfd70f5c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeeViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VemployeeViewFields[Row] { val countryregionname: Field[Name, Row] val additionalcontactinfo: OptField[TypoXml, Row] } -object VemployeeViewFields extends VemployeeViewStructure[VemployeeViewRow](None, identity, (_, x) => x) +object VemployeeViewFields { + val structure: Relation[VemployeeViewFields, VemployeeViewRow, VemployeeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) + extends Relation[VemployeeViewFields, VemployeeViewRow, Row] { + + override val fields: VemployeeViewFields[Row] = new VemployeeViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.additionalcontactinfo) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala index 673189dc49..989bea1393 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VemployeeViewRepoImpl extends VemployeeViewRepo { override def select: SelectBuilder[VemployeeViewFields, VemployeeViewRow] = { - SelectBuilderSql("humanresources.vemployee", VemployeeViewFields, VemployeeViewRow.read) + SelectBuilderSql("humanresources.vemployee", VemployeeViewFields.structure, VemployeeViewRow.read) } override def selectAll: Stream[ConnectionIO, VemployeeViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo" from humanresources.vemployee""".query(VemployeeViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala deleted file mode 100644 index 62e865c75f..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployee - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeeViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) - extends Relation[VemployeeViewFields, VemployeeViewRow, Row] - with VemployeeViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, additionalcontactinfo) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): VemployeeViewStructure[NewRow] = - new VemployeeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala index 1ecb4d0b1c..efa2687075 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmentViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait VemployeedepartmentViewFields[Row] { val groupname: Field[Name, Row] val startdate: Field[TypoLocalDate, Row] } -object VemployeedepartmentViewFields extends VemployeedepartmentViewStructure[VemployeedepartmentViewRow](None, identity, (_, x) => x) +object VemployeedepartmentViewFields { + val structure: Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, VemployeedepartmentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) + extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] { + + override val fields: VemployeedepartmentViewFields[Row] = new VemployeedepartmentViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.department, fields.groupname, fields.startdate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala index 15e9028cc2..8d7f9ab0fa 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VemployeedepartmentViewRepoImpl extends VemployeedepartmentViewRepo { override def select: SelectBuilder[VemployeedepartmentViewFields, VemployeedepartmentViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields, VemployeedepartmentViewRow.read) + SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields.structure, VemployeedepartmentViewRow.read) } override def selectAll: Stream[ConnectionIO, VemployeedepartmentViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "department", "groupname", "startdate"::text from humanresources.vemployeedepartment""".query(VemployeedepartmentViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala deleted file mode 100644 index 2d36b7de0c..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmentViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) - extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] - with VemployeedepartmentViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, department, groupname, startdate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): VemployeedepartmentViewStructure[NewRow] = - new VemployeedepartmentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala index 0b8e99af1e..03c889b42f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmenthistoryViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,33 @@ trait VemployeedepartmenthistoryViewFields[Row] { val startdate: Field[TypoLocalDate, Row] val enddate: OptField[TypoLocalDate, Row] } -object VemployeedepartmenthistoryViewFields extends VemployeedepartmenthistoryViewStructure[VemployeedepartmenthistoryViewRow](None, identity, (_, x) => x) +object VemployeedepartmenthistoryViewFields { + val structure: Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, VemployeedepartmenthistoryViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) + extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] { + + override val fields: VemployeedepartmenthistoryViewFields[Row] = new VemployeedepartmenthistoryViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.shift, fields.department, fields.groupname, fields.startdate, fields.enddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala index 492493f7e2..b31d7ba1b3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VemployeedepartmenthistoryViewRepoImpl extends VemployeedepartmenthistoryViewRepo { override def select: SelectBuilder[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow.read) + SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields.structure, VemployeedepartmenthistoryViewRow.read) } override def selectAll: Stream[ConnectionIO, VemployeedepartmenthistoryViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "shift", "department", "groupname", "startdate"::text, "enddate"::text from humanresources.vemployeedepartmenthistory""".query(VemployeedepartmenthistoryViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala deleted file mode 100644 index a4d7298c70..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmenthistoryViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) - extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] - with VemployeedepartmenthistoryViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, shift, department, groupname, startdate, enddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): VemployeedepartmenthistoryViewStructure[NewRow] = - new VemployeedepartmenthistoryViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala index 1f35768849..e39ea13cba 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -31,5 +33,38 @@ trait VjobcandidateViewFields[Row] { val WebSite: OptField[String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VjobcandidateViewFields extends VjobcandidateViewStructure[VjobcandidateViewRow](None, identity, (_, x) => x) +object VjobcandidateViewFields { + val structure: Relation[VjobcandidateViewFields, VjobcandidateViewRow, VjobcandidateViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) + extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] { + + override val fields: VjobcandidateViewFields[Row] = new VjobcandidateViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) + override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) + override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) + override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) + override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) + override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) + override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) + override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) + override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) + override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) + override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) + override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) + override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.NamePrefix, fields.NameFirst, fields.NameMiddle, fields.NameLast, fields.NameSuffix, fields.Skills, fields.AddrType, fields.AddrLocCountryRegion, fields.AddrLocState, fields.AddrLocCity, fields.AddrPostalCode, fields.EMail, fields.WebSite, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala index 03009a34e0..4edb4769aa 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateViewRepoImpl extends VjobcandidateViewRepo { override def select: SelectBuilder[VjobcandidateViewFields, VjobcandidateViewRow] = { - SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields, VjobcandidateViewRow.read) + SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields.structure, VjobcandidateViewRow.read) } override def selectAll: Stream[ConnectionIO, VjobcandidateViewRow] = { sql"""select "jobcandidateid", "businessentityid", "Name.Prefix", "Name.First", "Name.Middle", "Name.Last", "Name.Suffix", "Skills", "Addr.Type", "Addr.Loc.CountryRegion", "Addr.Loc.State", "Addr.Loc.City", "Addr.PostalCode", "EMail", "WebSite", "modifieddate"::text from humanresources.vjobcandidate""".query(VjobcandidateViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala deleted file mode 100644 index c2523ce854..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala +++ /dev/null @@ -1,44 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) - extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] - with VjobcandidateViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) - override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) - override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) - override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) - override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) - override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) - override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) - override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) - override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) - override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) - override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) - override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) - override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, NamePrefix, NameFirst, NameMiddle, NameLast, NameSuffix, Skills, AddrType, AddrLocCountryRegion, AddrLocState, AddrLocCity, AddrPostalCode, EMail, WebSite, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): VjobcandidateViewStructure[NewRow] = - new VjobcandidateViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala index c404685066..97c87e74fd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateeducation import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateeducationViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -27,5 +29,35 @@ trait VjobcandidateeducationViewFields[Row] { val EduLocState: OptField[/* max 100 chars */ String, Row] val EduLocCity: OptField[/* max 100 chars */ String, Row] } -object VjobcandidateeducationViewFields extends VjobcandidateeducationViewStructure[VjobcandidateeducationViewRow](None, identity, (_, x) => x) +object VjobcandidateeducationViewFields { + val structure: Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, VjobcandidateeducationViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) + extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] { + + override val fields: VjobcandidateeducationViewFields[Row] = new VjobcandidateeducationViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) + override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) + override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) + override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) + override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) + override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) + override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) + override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) + override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) + override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) + override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) + override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EduLevel, fields.EduStartDate, fields.EduEndDate, fields.EduDegree, fields.EduMajor, fields.EduMinor, fields.EduGPA, fields.EduGPAScale, fields.EduSchool, fields.EduLocCountryRegion, fields.EduLocState, fields.EduLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala index 3bba108726..d16ba8c39e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateeducationViewRepoImpl extends VjobcandidateeducationViewRepo { override def select: SelectBuilder[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields, VjobcandidateeducationViewRow.read) + SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields.structure, VjobcandidateeducationViewRow.read) } override def selectAll: Stream[ConnectionIO, VjobcandidateeducationViewRow] = { sql"""select "jobcandidateid", "Edu.Level", "Edu.StartDate"::text, "Edu.EndDate"::text, "Edu.Degree", "Edu.Major", "Edu.Minor", "Edu.GPA", "Edu.GPAScale", "Edu.School", "Edu.Loc.CountryRegion", "Edu.Loc.State", "Edu.Loc.City" from humanresources.vjobcandidateeducation""".query(VjobcandidateeducationViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala deleted file mode 100644 index f15b3290a9..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateeducation - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateeducationViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) - extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] - with VjobcandidateeducationViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) - override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) - override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) - override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) - override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) - override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) - override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) - override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) - override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) - override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) - override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) - override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EduLevel, EduStartDate, EduEndDate, EduDegree, EduMajor, EduMinor, EduGPA, EduGPAScale, EduSchool, EduLocCountryRegion, EduLocState, EduLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): VjobcandidateeducationViewStructure[NewRow] = - new VjobcandidateeducationViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala index f7df4754b7..b9f6602b2f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateemployment import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateemploymentViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -25,5 +27,33 @@ trait VjobcandidateemploymentViewFields[Row] { val EmpLocState: OptField[String, Row] val EmpLocCity: OptField[String, Row] } -object VjobcandidateemploymentViewFields extends VjobcandidateemploymentViewStructure[VjobcandidateemploymentViewRow](None, identity, (_, x) => x) +object VjobcandidateemploymentViewFields { + val structure: Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, VjobcandidateemploymentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) + extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] { + + override val fields: VjobcandidateemploymentViewFields[Row] = new VjobcandidateemploymentViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) + override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) + override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) + override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) + override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) + override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) + override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) + override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) + override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) + override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EmpStartDate, fields.EmpEndDate, fields.EmpOrgName, fields.EmpJobTitle, fields.EmpResponsibility, fields.EmpFunctionCategory, fields.EmpIndustryCategory, fields.EmpLocCountryRegion, fields.EmpLocState, fields.EmpLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala index 93e803ed2f..d66ed81a95 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VjobcandidateemploymentViewRepoImpl extends VjobcandidateemploymentViewRepo { override def select: SelectBuilder[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow.read) + SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields.structure, VjobcandidateemploymentViewRow.read) } override def selectAll: Stream[ConnectionIO, VjobcandidateemploymentViewRow] = { sql"""select "jobcandidateid", "Emp.StartDate"::text, "Emp.EndDate"::text, "Emp.OrgName", "Emp.JobTitle", "Emp.Responsibility", "Emp.FunctionCategory", "Emp.IndustryCategory", "Emp.Loc.CountryRegion", "Emp.Loc.State", "Emp.Loc.City" from humanresources.vjobcandidateemployment""".query(VjobcandidateemploymentViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala deleted file mode 100644 index 249a29af29..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateemployment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateemploymentViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) - extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] - with VjobcandidateemploymentViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) - override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) - override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) - override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) - override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) - override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) - override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) - override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) - override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) - override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EmpStartDate, EmpEndDate, EmpOrgName, EmpJobTitle, EmpResponsibility, EmpFunctionCategory, EmpIndustryCategory, EmpLocCountryRegion, EmpLocState, EmpLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): VjobcandidateemploymentViewStructure[NewRow] = - new VjobcandidateemploymentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala index cc5665827f..5fecc56058 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.address.AddressId import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AViewFields[Row] { val id: Field[AddressId, Row] @@ -27,5 +29,32 @@ trait AViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AViewFields extends AViewStructure[AViewRow](None, identity, (_, x) => x) +object AViewFields { + val structure: Relation[AViewFields, AViewRow, AViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) + extends Relation[AViewFields, AViewRow, Row] { + + override val fields: AViewFields[Row] = new AViewFields[Row] { + override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala index 3a3ff0ba8f..fa0bd705fc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class AViewRepoImpl extends AViewRepo { override def select: SelectBuilder[AViewFields, AViewRow] = { - SelectBuilderSql("pe.a", AViewFields, AViewRow.read) + SelectBuilderSql("pe.a", AViewFields.structure, AViewRow.read) } override def selectAll: Stream[ConnectionIO, AViewRow] = { sql"""select "id", "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text from pe.a""".query(AViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala deleted file mode 100644 index d35821de31..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package a - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AViewStructure[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) - extends Relation[AViewFields, AViewRow, Row] - with AViewFields[Row] { outer => - - override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): AViewStructure[NewRow] = - new AViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala index 6e39752a18..73d165bd6c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.addresstype.AddresstypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait AtViewFields[Row] { val id: Field[AddresstypeId, Row] @@ -20,5 +22,27 @@ trait AtViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AtViewFields extends AtViewStructure[AtViewRow](None, identity, (_, x) => x) +object AtViewFields { + val structure: Relation[AtViewFields, AtViewRow, AtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) + extends Relation[AtViewFields, AtViewRow, Row] { + + override val fields: AtViewFields[Row] = new AtViewFields[Row] { + override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala index 304621af58..69b72a8775 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class AtViewRepoImpl extends AtViewRepo { override def select: SelectBuilder[AtViewFields, AtViewRow] = { - SelectBuilderSql("pe.at", AtViewFields, AtViewRow.read) + SelectBuilderSql("pe.at", AtViewFields.structure, AtViewRow.read) } override def selectAll: Stream[ConnectionIO, AtViewRow] = { sql"""select "id", "addresstypeid", "name", "rowguid", "modifieddate"::text from pe.at""".query(AtViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala deleted file mode 100644 index 381f16a972..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package at - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class AtViewStructure[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) - extends Relation[AtViewFields, AtViewRow, Row] - with AtViewFields[Row] { outer => - - override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): AtViewStructure[NewRow] = - new AtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala index f8bd6c8773..44a35fbf85 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait BeViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeViewFields extends BeViewStructure[BeViewRow](None, identity, (_, x) => x) +object BeViewFields { + val structure: Relation[BeViewFields, BeViewRow, BeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) + extends Relation[BeViewFields, BeViewRow, Row] { + + override val fields: BeViewFields[Row] = new BeViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala index d6d415e03f..27c25fbf5e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class BeViewRepoImpl extends BeViewRepo { override def select: SelectBuilder[BeViewFields, BeViewRow] = { - SelectBuilderSql("pe.be", BeViewFields, BeViewRow.read) + SelectBuilderSql("pe.be", BeViewFields.structure, BeViewRow.read) } override def selectAll: Stream[ConnectionIO, BeViewRow] = { sql"""select "id", "businessentityid", "rowguid", "modifieddate"::text from pe.be""".query(BeViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala deleted file mode 100644 index ef782f336b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package be - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeViewStructure[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) - extends Relation[BeViewFields, BeViewRow, Row] - with BeViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): BeViewStructure[NewRow] = - new BeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala index 38e0461608..953b76e826 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -22,5 +24,28 @@ trait BeaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeaViewFields extends BeaViewStructure[BeaViewRow](None, identity, (_, x) => x) +object BeaViewFields { + val structure: Relation[BeaViewFields, BeaViewRow, BeaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) + extends Relation[BeaViewFields, BeaViewRow, Row] { + + override val fields: BeaViewFields[Row] = new BeaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala index 4ceed3b3f8..ad919ab99f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class BeaViewRepoImpl extends BeaViewRepo { override def select: SelectBuilder[BeaViewFields, BeaViewRow] = { - SelectBuilderSql("pe.bea", BeaViewFields, BeaViewRow.read) + SelectBuilderSql("pe.bea", BeaViewFields.structure, BeaViewRow.read) } override def selectAll: Stream[ConnectionIO, BeaViewRow] = { sql"""select "id", "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text from pe.bea""".query(BeaViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala deleted file mode 100644 index 9939c42684..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bea - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeaViewStructure[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) - extends Relation[BeaViewFields, BeaViewRow, Row] - with BeaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): BeaViewStructure[NewRow] = - new BeaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala index 5724f5ff7a..0e872552fe 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BecViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -21,5 +23,28 @@ trait BecViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BecViewFields extends BecViewStructure[BecViewRow](None, identity, (_, x) => x) +object BecViewFields { + val structure: Relation[BecViewFields, BecViewRow, BecViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) + extends Relation[BecViewFields, BecViewRow, Row] { + + override val fields: BecViewFields[Row] = new BecViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala index 5d751b9d76..7531d77950 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class BecViewRepoImpl extends BecViewRepo { override def select: SelectBuilder[BecViewFields, BecViewRow] = { - SelectBuilderSql("pe.bec", BecViewFields, BecViewRow.read) + SelectBuilderSql("pe.bec", BecViewFields.structure, BecViewRow.read) } override def selectAll: Stream[ConnectionIO, BecViewRow] = { sql"""select "id", "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text from pe.bec""".query(BecViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala deleted file mode 100644 index a09467f9c3..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bec - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BecViewStructure[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) - extends Relation[BecViewFields, BecViewRow, Row] - with BecViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): BecViewStructure[NewRow] = - new BecViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala index 71ec6e83a7..b3f8dc09fb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala index 4e5670a1ab..1f605eadda 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("pe.cr", CrViewFields, CrViewRow.read) + SelectBuilderSql("pe.cr", CrViewFields.structure, CrViewRow.read) } override def selectAll: Stream[ConnectionIO, CrViewRow] = { sql"""select "countryregioncode", "name", "modifieddate"::text from pe.cr""".query(CrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala deleted file mode 100644 index 32b8f25325..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala index c00715d06d..05e359b886 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.contacttype.ContacttypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CtViewFields[Row] { val id: Field[ContacttypeId, Row] @@ -18,5 +20,26 @@ trait CtViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CtViewFields extends CtViewStructure[CtViewRow](None, identity, (_, x) => x) +object CtViewFields { + val structure: Relation[CtViewFields, CtViewRow, CtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) + extends Relation[CtViewFields, CtViewRow, Row] { + + override val fields: CtViewFields[Row] = new CtViewFields[Row] { + override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala index c3e408233b..f060f1a50b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CtViewRepoImpl extends CtViewRepo { override def select: SelectBuilder[CtViewFields, CtViewRow] = { - SelectBuilderSql("pe.ct", CtViewFields, CtViewRow.read) + SelectBuilderSql("pe.ct", CtViewFields.structure, CtViewRow.read) } override def selectAll: Stream[ConnectionIO, CtViewRow] = { sql"""select "id", "contacttypeid", "name", "modifieddate"::text from pe.ct""".query(CtViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala deleted file mode 100644 index a614c2a88f..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package ct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.contacttype.ContacttypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CtViewStructure[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) - extends Relation[CtViewFields, CtViewRow, Row] - with CtViewFields[Row] { outer => - - override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): CtViewStructure[NewRow] = - new CtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala index 8ed9659638..22e526b4d7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[Int, Row] @@ -21,5 +23,28 @@ trait EViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala index 4132d5a4bc..5b6c8b2891 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("pe.e", EViewFields, EViewRow.read) + SelectBuilderSql("pe.e", EViewFields.structure, EViewRow.read) } override def selectAll: Stream[ConnectionIO, EViewRow] = { sql"""select "id", "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text from pe.e""".query(EViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala deleted file mode 100644 index 7003503552..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package e - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala index 8880bac907..1d5c84ab96 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -33,5 +35,36 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala index 9652729684..0f1fac13c4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pe.p", PViewFields, PViewRow.read) + SelectBuilderSql("pe.p", PViewFields.structure, PViewRow.read) } override def selectAll: Stream[ConnectionIO, PViewRow] = { sql"""select "id", "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text from pe.p""".query(PViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala deleted file mode 100644 index 29b01d51a8..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala index 4df2b951fc..8c828a7e8e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait PaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PaViewFields extends PaViewStructure[PaViewRow](None, identity, (_, x) => x) +object PaViewFields { + val structure: Relation[PaViewFields, PaViewRow, PaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) + extends Relation[PaViewFields, PaViewRow, Row] { + + override val fields: PaViewFields[Row] = new PaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala index 1fdab19ae7..79b9386a84 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PaViewRepoImpl extends PaViewRepo { override def select: SelectBuilder[PaViewFields, PaViewRow] = { - SelectBuilderSql("pe.pa", PaViewFields, PaViewRow.read) + SelectBuilderSql("pe.pa", PaViewFields.structure, PaViewRow.read) } override def selectAll: Stream[ConnectionIO, PaViewRow] = { sql"""select "id", "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text from pe.pa""".query(PaViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala deleted file mode 100644 index 77b7c56702..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pa - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PaViewStructure[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) - extends Relation[PaViewFields, PaViewRow, Row] - with PaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): PaViewStructure[NewRow] = - new PaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala index 9af94760e7..630721766e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PntViewFields[Row] { val id: Field[PhonenumbertypeId, Row] @@ -18,5 +20,26 @@ trait PntViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PntViewFields extends PntViewStructure[PntViewRow](None, identity, (_, x) => x) +object PntViewFields { + val structure: Relation[PntViewFields, PntViewRow, PntViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) + extends Relation[PntViewFields, PntViewRow, Row] { + + override val fields: PntViewFields[Row] = new PntViewFields[Row] { + override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala index 07e265bec1..26460c9aef 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PntViewRepoImpl extends PntViewRepo { override def select: SelectBuilder[PntViewFields, PntViewRow] = { - SelectBuilderSql("pe.pnt", PntViewFields, PntViewRow.read) + SelectBuilderSql("pe.pnt", PntViewFields.structure, PntViewRow.read) } override def selectAll: Stream[ConnectionIO, PntViewRow] = { sql"""select "id", "phonenumbertypeid", "name", "modifieddate"::text from pe.pnt""".query(PntViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala deleted file mode 100644 index d44f7f510a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pnt - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PntViewStructure[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) - extends Relation[PntViewFields, PntViewRow, Row] - with PntViewFields[Row] { outer => - - override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): PntViewStructure[NewRow] = - new PntViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala index 0b585f248d..f0171eea8c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PpViewFields[Row] { val phonenumbertypeid: Field[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala index 5fb3b4df0f..b17028f4f5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pe.pp", PpViewFields, PpViewRow.read) + SelectBuilderSql("pe.pp", PpViewFields.structure, PpViewRow.read) } override def selectAll: Stream[ConnectionIO, PpViewRow] = { sql"""select "id", "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text from pe.pp""".query(PpViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala deleted file mode 100644 index e7f3f91a3f..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala index 5a5f45bc45..0ab206b422 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala @@ -15,6 +15,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[StateprovinceId, Row] @@ -27,5 +29,31 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala index 71e60611a3..342d5327fa 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("pe.sp", SpViewFields, SpViewRow.read) + SelectBuilderSql("pe.sp", SpViewFields.structure, SpViewRow.read) } override def selectAll: Stream[ConnectionIO, SpViewRow] = { sql"""select "id", "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text from pe.sp""".query(SpViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala deleted file mode 100644 index 453b934478..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressFields.scala index b492204f15..b5c63e2aff 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AddressFields[Row] { val addressid: IdField[AddressId, Row] @@ -26,5 +28,31 @@ trait AddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddressFields extends AddressStructure[AddressRow](None, identity, (_, x) => x) +object AddressFields { + val structure: Relation[AddressFields, AddressRow, AddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) + extends Relation[AddressFields, AddressRow, Row] { + + override val fields: AddressFields[Row] = new AddressFields[Row] { + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala index 0b24369de4..16dd0acf9d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala @@ -30,7 +30,7 @@ class AddressRepoImpl extends AddressRepo { sql"""delete from person.address where "addressid" = ${fromWrite(addressid)(Write.fromPut(AddressId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilder("person.address", AddressFields) + DeleteBuilder("person.address", AddressFields.structure) } override def insert(unsaved: AddressRow): ConnectionIO[AddressRow] = { sql"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") @@ -82,7 +82,7 @@ class AddressRepoImpl extends AddressRepo { new FragmentOps(sql"""COPY person.address("addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "addressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(AddressRowUnsaved.text) } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderSql("person.address", AddressFields, AddressRow.read) + SelectBuilderSql("person.address", AddressFields.structure, AddressRow.read) } override def selectAll: Stream[ConnectionIO, AddressRow] = { sql"""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text from person.address""".query(AddressRow.read).stream @@ -110,7 +110,7 @@ class AddressRepoImpl extends AddressRepo { .map(_ > 0) } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilder("person.address", AddressFields, AddressRow.read) + UpdateBuilder("person.address", AddressFields.structure, AddressRow.read) } override def upsert(unsaved: AddressRow): ConnectionIO[AddressRow] = { sql"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala index 9be56fc59d..886415fb0e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala @@ -27,7 +27,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], delay(map.remove(addressid).isDefined) } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilderMock(DeleteParams.empty, AddressFields, map) + DeleteBuilderMock(DeleteParams.empty, AddressFields.structure.fields, map) } override def insert(unsaved: AddressRow): ConnectionIO[AddressRow] = { delay { @@ -65,7 +65,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], } } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderMock(AddressFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(AddressFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, AddressRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], } } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilderMock(UpdateParams.empty, AddressFields, map) + UpdateBuilderMock(UpdateParams.empty, AddressFields.structure.fields, map) } override def upsert(unsaved: AddressRow): ConnectionIO[AddressRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala deleted file mode 100644 index 58886fe980..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package address - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AddressStructure[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) - extends Relation[AddressFields, AddressRow, Row] - with AddressFields[Row] { outer => - - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): AddressStructure[NewRow] = - new AddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala index 3abd412d62..8af35e8c39 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait AddresstypeFields[Row] { val addresstypeid: IdField[AddresstypeId, Row] @@ -19,5 +21,26 @@ trait AddresstypeFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddresstypeFields extends AddresstypeStructure[AddresstypeRow](None, identity, (_, x) => x) +object AddresstypeFields { + val structure: Relation[AddresstypeFields, AddresstypeRow, AddresstypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) + extends Relation[AddresstypeFields, AddresstypeRow, Row] { + + override val fields: AddresstypeFields[Row] = new AddresstypeFields[Row] { + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala index 67bd5039b8..726d2ec22c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala @@ -28,7 +28,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { sql"""delete from person.addresstype where "addresstypeid" = ${fromWrite(addresstypeid)(Write.fromPut(AddresstypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilder("person.addresstype", AddresstypeFields) + DeleteBuilder("person.addresstype", AddresstypeFields.structure) } override def insert(unsaved: AddresstypeRow): ConnectionIO[AddresstypeRow] = { sql"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { new FragmentOps(sql"""COPY person.addresstype("name", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(AddresstypeRowUnsaved.text) } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderSql("person.addresstype", AddresstypeFields, AddresstypeRow.read) + SelectBuilderSql("person.addresstype", AddresstypeFields.structure, AddresstypeRow.read) } override def selectAll: Stream[ConnectionIO, AddresstypeRow] = { sql"""select "addresstypeid", "name", "rowguid", "modifieddate"::text from person.addresstype""".query(AddresstypeRow.read).stream @@ -98,7 +98,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { .map(_ > 0) } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilder("person.addresstype", AddresstypeFields, AddresstypeRow.read) + UpdateBuilder("person.addresstype", AddresstypeFields.structure, AddresstypeRow.read) } override def upsert(unsaved: AddresstypeRow): ConnectionIO[AddresstypeRow] = { sql"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala index 6e0df596a0..9737885a15 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala @@ -27,7 +27,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow delay(map.remove(addresstypeid).isDefined) } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilderMock(DeleteParams.empty, AddresstypeFields, map) + DeleteBuilderMock(DeleteParams.empty, AddresstypeFields.structure.fields, map) } override def insert(unsaved: AddresstypeRow): ConnectionIO[AddresstypeRow] = { delay { @@ -65,7 +65,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow } } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderMock(AddresstypeFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(AddresstypeFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, AddresstypeRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow } } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilderMock(UpdateParams.empty, AddresstypeFields, map) + UpdateBuilderMock(UpdateParams.empty, AddresstypeFields.structure.fields, map) } override def upsert(unsaved: AddresstypeRow): ConnectionIO[AddresstypeRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala deleted file mode 100644 index 26194371da..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package addresstype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class AddresstypeStructure[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) - extends Relation[AddresstypeFields, AddresstypeRow, Row] - with AddresstypeFields[Row] { outer => - - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): AddresstypeStructure[NewRow] = - new AddresstypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala index fd3999d9a5..c722c5d75f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala @@ -10,12 +10,34 @@ package businessentity import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityFields extends BusinessentityStructure[BusinessentityRow](None, identity, (_, x) => x) +object BusinessentityFields { + val structure: Relation[BusinessentityFields, BusinessentityRow, BusinessentityRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) + extends Relation[BusinessentityFields, BusinessentityRow, Row] { + + override val fields: BusinessentityFields[Row] = new BusinessentityFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala index a5f02cd6e8..582488c89d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala @@ -27,7 +27,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { sql"""delete from person.businessentity where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilder("person.businessentity", BusinessentityFields) + DeleteBuilder("person.businessentity", BusinessentityFields.structure) } override def insert(unsaved: BusinessentityRow): ConnectionIO[BusinessentityRow] = { sql"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") @@ -73,7 +73,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { new FragmentOps(sql"""COPY person.businessentity("businessentityid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(BusinessentityRowUnsaved.text) } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderSql("person.businessentity", BusinessentityFields, BusinessentityRow.read) + SelectBuilderSql("person.businessentity", BusinessentityFields.structure, BusinessentityRow.read) } override def selectAll: Stream[ConnectionIO, BusinessentityRow] = { sql"""select "businessentityid", "rowguid", "modifieddate"::text from person.businessentity""".query(BusinessentityRow.read).stream @@ -95,7 +95,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { .map(_ > 0) } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilder("person.businessentity", BusinessentityFields, BusinessentityRow.read) + UpdateBuilder("person.businessentity", BusinessentityFields.structure, BusinessentityRow.read) } override def upsert(unsaved: BusinessentityRow): ConnectionIO[BusinessentityRow] = { sql"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala index 95361b3277..90f5651041 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala @@ -27,7 +27,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityFields.structure.fields, map) } override def insert(unsaved: BusinessentityRow): ConnectionIO[BusinessentityRow] = { delay { @@ -65,7 +65,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business } } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderMock(BusinessentityFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(BusinessentityFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, BusinessentityRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business } } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityFields.structure.fields, map) } override def upsert(unsaved: BusinessentityRow): ConnectionIO[BusinessentityRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala deleted file mode 100644 index d99792e42a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentity - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) - extends Relation[BusinessentityFields, BusinessentityRow, Row] - with BusinessentityFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): BusinessentityStructure[NewRow] = - new BusinessentityStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala index 69b5da117f..0e559e6517 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -22,5 +24,27 @@ trait BusinessentityaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityaddressFields extends BusinessentityaddressStructure[BusinessentityaddressRow](None, identity, (_, x) => x) +object BusinessentityaddressFields { + val structure: Relation[BusinessentityaddressFields, BusinessentityaddressRow, BusinessentityaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) + extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] { + + override val fields: BusinessentityaddressFields[Row] = new BusinessentityaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala index e6a77d57f3..4522c6cfc2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala @@ -30,7 +30,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { sql"""delete from person.businessentityaddress where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "addressid" = ${fromWrite(compositeId.addressid)(Write.fromPut(AddressId.put))} AND "addresstypeid" = ${fromWrite(compositeId.addresstypeid)(Write.fromPut(AddresstypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields) + DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields.structure) } override def insert(unsaved: BusinessentityaddressRow): ConnectionIO[BusinessentityaddressRow] = { sql"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { new FragmentOps(sql"""COPY person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(BusinessentityaddressRowUnsaved.text) } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.read) + SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.read) } override def selectAll: Stream[ConnectionIO, BusinessentityaddressRow] = { sql"""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text from person.businessentityaddress""".query(BusinessentityaddressRow.read).stream @@ -94,7 +94,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { .map(_ > 0) } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.read) + UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.read) } override def upsert(unsaved: BusinessentityaddressRow): ConnectionIO[BusinessentityaddressRow] = { sql"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala index 664bbc63dc..c02ad0cf42 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala @@ -27,7 +27,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields.structure.fields, map) } override def insert(unsaved: BusinessentityaddressRow): ConnectionIO[BusinessentityaddressRow] = { delay { @@ -65,7 +65,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns } } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderMock(BusinessentityaddressFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(BusinessentityaddressFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, BusinessentityaddressRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns } } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields.structure.fields, map) } override def upsert(unsaved: BusinessentityaddressRow): ConnectionIO[BusinessentityaddressRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala deleted file mode 100644 index 0b37a0b189..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentityaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityaddressStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) - extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] - with BusinessentityaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): BusinessentityaddressStructure[NewRow] = - new BusinessentityaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala index 883fa124b2..d4ff340ace 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentitycontactFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait BusinessentitycontactFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentitycontactFields extends BusinessentitycontactStructure[BusinessentitycontactRow](None, identity, (_, x) => x) +object BusinessentitycontactFields { + val structure: Relation[BusinessentitycontactFields, BusinessentitycontactRow, BusinessentitycontactRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) + extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] { + + override val fields: BusinessentitycontactFields[Row] = new BusinessentitycontactFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala index de055d0261..db53e45c0c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala @@ -29,7 +29,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { sql"""delete from person.businessentitycontact where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "personid" = ${fromWrite(compositeId.personid)(Write.fromPut(BusinessentityId.put))} AND "contacttypeid" = ${fromWrite(compositeId.contacttypeid)(Write.fromPut(ContacttypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields) + DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields.structure) } override def insert(unsaved: BusinessentitycontactRow): ConnectionIO[BusinessentitycontactRow] = { sql"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { new FragmentOps(sql"""COPY person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(BusinessentitycontactRowUnsaved.text) } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.read) + SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.read) } override def selectAll: Stream[ConnectionIO, BusinessentitycontactRow] = { sql"""select "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text from person.businessentitycontact""".query(BusinessentitycontactRow.read).stream @@ -93,7 +93,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { .map(_ > 0) } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.read) + UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.read) } override def upsert(unsaved: BusinessentitycontactRow): ConnectionIO[BusinessentitycontactRow] = { sql"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala index b5c0435c8a..177d2709bd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala @@ -27,7 +27,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields.structure.fields, map) } override def insert(unsaved: BusinessentitycontactRow): ConnectionIO[BusinessentitycontactRow] = { delay { @@ -65,7 +65,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns } } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderMock(BusinessentitycontactFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(BusinessentitycontactFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, BusinessentitycontactRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns } } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields.structure.fields, map) } override def upsert(unsaved: BusinessentitycontactRow): ConnectionIO[BusinessentitycontactRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala deleted file mode 100644 index bd08013e4b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentitycontact - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentitycontactStructure[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) - extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] - with BusinessentitycontactFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): BusinessentitycontactStructure[NewRow] = - new BusinessentitycontactStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala index 13178f020f..08a63694ec 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala @@ -10,12 +10,34 @@ package contacttype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ContacttypeFields[Row] { val contacttypeid: IdField[ContacttypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ContacttypeFields extends ContacttypeStructure[ContacttypeRow](None, identity, (_, x) => x) +object ContacttypeFields { + val structure: Relation[ContacttypeFields, ContacttypeRow, ContacttypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) + extends Relation[ContacttypeFields, ContacttypeRow, Row] { + + override val fields: ContacttypeFields[Row] = new ContacttypeFields[Row] { + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala index bd99fc12f6..44d22c97c3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala @@ -27,7 +27,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { sql"""delete from person.contacttype where "contacttypeid" = ${fromWrite(contacttypeid)(Write.fromPut(ContacttypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilder("person.contacttype", ContacttypeFields) + DeleteBuilder("person.contacttype", ContacttypeFields.structure) } override def insert(unsaved: ContacttypeRow): ConnectionIO[ContacttypeRow] = { sql"""insert into person.contacttype("contacttypeid", "name", "modifieddate") @@ -70,7 +70,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { new FragmentOps(sql"""COPY person.contacttype("name", "contacttypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ContacttypeRowUnsaved.text) } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderSql("person.contacttype", ContacttypeFields, ContacttypeRow.read) + SelectBuilderSql("person.contacttype", ContacttypeFields.structure, ContacttypeRow.read) } override def selectAll: Stream[ConnectionIO, ContacttypeRow] = { sql"""select "contacttypeid", "name", "modifieddate"::text from person.contacttype""".query(ContacttypeRow.read).stream @@ -92,7 +92,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { .map(_ > 0) } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilder("person.contacttype", ContacttypeFields, ContacttypeRow.read) + UpdateBuilder("person.contacttype", ContacttypeFields.structure, ContacttypeRow.read) } override def upsert(unsaved: ContacttypeRow): ConnectionIO[ContacttypeRow] = { sql"""insert into person.contacttype("contacttypeid", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala index 978c5ea744..6bc534ea68 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala @@ -27,7 +27,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow delay(map.remove(contacttypeid).isDefined) } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilderMock(DeleteParams.empty, ContacttypeFields, map) + DeleteBuilderMock(DeleteParams.empty, ContacttypeFields.structure.fields, map) } override def insert(unsaved: ContacttypeRow): ConnectionIO[ContacttypeRow] = { delay { @@ -65,7 +65,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow } } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderMock(ContacttypeFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ContacttypeFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ContacttypeRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow } } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilderMock(UpdateParams.empty, ContacttypeFields, map) + UpdateBuilderMock(UpdateParams.empty, ContacttypeFields.structure.fields, map) } override def upsert(unsaved: ContacttypeRow): ConnectionIO[ContacttypeRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala deleted file mode 100644 index ead8cf9935..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package contacttype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ContacttypeStructure[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) - extends Relation[ContacttypeFields, ContacttypeRow, Row] - with ContacttypeFields[Row] { outer => - - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): ContacttypeStructure[NewRow] = - new ContacttypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala index 81df8b5160..ab09f11089 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala @@ -10,12 +10,34 @@ package countryregion import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregionFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregionFields extends CountryregionStructure[CountryregionRow](None, identity, (_, x) => x) +object CountryregionFields { + val structure: Relation[CountryregionFields, CountryregionRow, CountryregionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) + extends Relation[CountryregionFields, CountryregionRow, Row] { + + override val fields: CountryregionFields[Row] = new CountryregionFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala index d93a5e1033..b3fc0e27d5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala @@ -27,7 +27,7 @@ class CountryregionRepoImpl extends CountryregionRepo { sql"""delete from person.countryregion where "countryregioncode" = ${fromWrite(countryregioncode)(Write.fromPut(CountryregionId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilder("person.countryregion", CountryregionFields) + DeleteBuilder("person.countryregion", CountryregionFields.structure) } override def insert(unsaved: CountryregionRow): ConnectionIO[CountryregionRow] = { sql"""insert into person.countryregion("countryregioncode", "name", "modifieddate") @@ -67,7 +67,7 @@ class CountryregionRepoImpl extends CountryregionRepo { new FragmentOps(sql"""COPY person.countryregion("countryregioncode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CountryregionRowUnsaved.text) } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderSql("person.countryregion", CountryregionFields, CountryregionRow.read) + SelectBuilderSql("person.countryregion", CountryregionFields.structure, CountryregionRow.read) } override def selectAll: Stream[ConnectionIO, CountryregionRow] = { sql"""select "countryregioncode", "name", "modifieddate"::text from person.countryregion""".query(CountryregionRow.read).stream @@ -89,7 +89,7 @@ class CountryregionRepoImpl extends CountryregionRepo { .map(_ > 0) } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilder("person.countryregion", CountryregionFields, CountryregionRow.read) + UpdateBuilder("person.countryregion", CountryregionFields.structure, CountryregionRow.read) } override def upsert(unsaved: CountryregionRow): ConnectionIO[CountryregionRow] = { sql"""insert into person.countryregion("countryregioncode", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala index b92470773d..015b6ee0f7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala @@ -27,7 +27,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg delay(map.remove(countryregioncode).isDefined) } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregionFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregionFields.structure.fields, map) } override def insert(unsaved: CountryregionRow): ConnectionIO[CountryregionRow] = { delay { @@ -65,7 +65,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg } } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderMock(CountryregionFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CountryregionFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CountryregionRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg } } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregionFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregionFields.structure.fields, map) } override def upsert(unsaved: CountryregionRow): ConnectionIO[CountryregionRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala deleted file mode 100644 index 87d6ccbd31..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package countryregion - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregionStructure[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) - extends Relation[CountryregionFields, CountryregionRow, Row] - with CountryregionFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): CountryregionStructure[NewRow] = - new CountryregionStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala index 70ce831bfd..947814d7fe 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmailaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait EmailaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmailaddressFields extends EmailaddressStructure[EmailaddressRow](None, identity, (_, x) => x) +object EmailaddressFields { + val structure: Relation[EmailaddressFields, EmailaddressRow, EmailaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) + extends Relation[EmailaddressFields, EmailaddressRow, Row] { + + override val fields: EmailaddressFields[Row] = new EmailaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala index 18877c18e6..6da9671cf9 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala @@ -29,7 +29,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { sql"""delete from person.emailaddress where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "emailaddressid" = ${fromWrite(compositeId.emailaddressid)(Write.fromPut(Meta.IntMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilder("person.emailaddress", EmailaddressFields) + DeleteBuilder("person.emailaddress", EmailaddressFields.structure) } override def insert(unsaved: EmailaddressRow): ConnectionIO[EmailaddressRow] = { sql"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") @@ -77,7 +77,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { new FragmentOps(sql"""COPY person.emailaddress("businessentityid", "emailaddress", "emailaddressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(EmailaddressRowUnsaved.text) } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderSql("person.emailaddress", EmailaddressFields, EmailaddressRow.read) + SelectBuilderSql("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.read) } override def selectAll: Stream[ConnectionIO, EmailaddressRow] = { sql"""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text from person.emailaddress""".query(EmailaddressRow.read).stream @@ -97,7 +97,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { .map(_ > 0) } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilder("person.emailaddress", EmailaddressFields, EmailaddressRow.read) + UpdateBuilder("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.read) } override def upsert(unsaved: EmailaddressRow): ConnectionIO[EmailaddressRow] = { sql"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala index 3f9f480700..085fad80ac 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala @@ -27,7 +27,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, EmailaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, EmailaddressFields.structure.fields, map) } override def insert(unsaved: EmailaddressRow): ConnectionIO[EmailaddressRow] = { delay { @@ -65,7 +65,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress } } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderMock(EmailaddressFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(EmailaddressFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, EmailaddressRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress } } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, EmailaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, EmailaddressFields.structure.fields, map) } override def upsert(unsaved: EmailaddressRow): ConnectionIO[EmailaddressRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala deleted file mode 100644 index 55cc11a4b2..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package emailaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmailaddressStructure[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) - extends Relation[EmailaddressFields, EmailaddressRow, Row] - with EmailaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): EmailaddressStructure[NewRow] = - new EmailaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala index 2d6eead3de..1318c25e43 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PasswordFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PasswordFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PasswordFields extends PasswordStructure[PasswordRow](None, identity, (_, x) => x) +object PasswordFields { + val structure: Relation[PasswordFields, PasswordRow, PasswordRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) + extends Relation[PasswordFields, PasswordRow, Row] { + + override val fields: PasswordFields[Row] = new PasswordFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala index 4ccf14caa6..9f93d89638 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala @@ -29,7 +29,7 @@ class PasswordRepoImpl extends PasswordRepo { sql"""delete from person.password where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilder("person.password", PasswordFields) + DeleteBuilder("person.password", PasswordFields.structure) } override def insert(unsaved: PasswordRow): ConnectionIO[PasswordRow] = { sql"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class PasswordRepoImpl extends PasswordRepo { new FragmentOps(sql"""COPY person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PasswordRowUnsaved.text) } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderSql("person.password", PasswordFields, PasswordRow.read) + SelectBuilderSql("person.password", PasswordFields.structure, PasswordRow.read) } override def selectAll: Stream[ConnectionIO, PasswordRow] = { sql"""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text from person.password""".query(PasswordRow.read).stream @@ -98,7 +98,7 @@ class PasswordRepoImpl extends PasswordRepo { .map(_ > 0) } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilder("person.password", PasswordFields, PasswordRow.read) + UpdateBuilder("person.password", PasswordFields.structure, PasswordRow.read) } override def upsert(unsaved: PasswordRow): ConnectionIO[PasswordRow] = { sql"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala index 2f688992bd..7c33f67047 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala @@ -28,7 +28,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilderMock(DeleteParams.empty, PasswordFields, map) + DeleteBuilderMock(DeleteParams.empty, PasswordFields.structure.fields, map) } override def insert(unsaved: PasswordRow): ConnectionIO[PasswordRow] = { delay { @@ -66,7 +66,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], } } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderMock(PasswordFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PasswordFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PasswordRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], } } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilderMock(UpdateParams.empty, PasswordFields, map) + UpdateBuilderMock(UpdateParams.empty, PasswordFields.structure.fields, map) } override def upsert(unsaved: PasswordRow): ConnectionIO[PasswordRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala deleted file mode 100644 index 60b557bdc7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package password - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PasswordStructure[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) - extends Relation[PasswordFields, PasswordRow, Row] - with PasswordFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): PasswordStructure[NewRow] = - new PasswordStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonFields.scala index 0119c6291d..ca8795be9b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonFields.scala @@ -15,8 +15,10 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -33,5 +35,35 @@ trait PersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala index a4762d6a29..b74d1abb13 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala @@ -33,7 +33,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from person.person where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("person.person", PersonFields) + DeleteBuilder("person.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") @@ -92,7 +92,7 @@ class PersonRepoImpl extends PersonRepo { new FragmentOps(sql"""COPY person.person("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("person.person", PersonFields, PersonRow.read) + SelectBuilderSql("person.person", PersonFields.structure, PersonRow.read) } override def selectAll: Stream[ConnectionIO, PersonRow] = { sql"""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text from person.person""".query(PersonRow.read).stream @@ -124,7 +124,7 @@ class PersonRepoImpl extends PersonRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("person.person", PersonFields, PersonRow.read) + UpdateBuilder("person.person", PersonFields.structure, PersonRow.read) } override def upsert(unsaved: PersonRow): ConnectionIO[PersonRow] = { sql"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala index 185ec476ff..f55ef7c6e3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala @@ -28,7 +28,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { @@ -66,7 +66,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def upsert(unsaved: PersonRow): ConnectionIO[PersonRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala deleted file mode 100644 index 123311e8d4..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package person - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala index f297954278..5795d7246d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersonphoneFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,26 @@ trait PersonphoneFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonphoneFields extends PersonphoneStructure[PersonphoneRow](None, identity, (_, x) => x) +object PersonphoneFields { + val structure: Relation[PersonphoneFields, PersonphoneRow, PersonphoneRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) + extends Relation[PersonphoneFields, PersonphoneRow, Row] { + + override val fields: PersonphoneFields[Row] = new PersonphoneFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala index bcd0e6b1a3..d9ec1e63f7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala @@ -29,7 +29,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { sql"""delete from person.personphone where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "phonenumber" = ${fromWrite(compositeId.phonenumber)(Write.fromPut(Phone.put))} AND "phonenumbertypeid" = ${fromWrite(compositeId.phonenumbertypeid)(Write.fromPut(PhonenumbertypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilder("person.personphone", PersonphoneFields) + DeleteBuilder("person.personphone", PersonphoneFields.structure) } override def insert(unsaved: PersonphoneRow): ConnectionIO[PersonphoneRow] = { sql"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") @@ -70,7 +70,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { new FragmentOps(sql"""COPY person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersonphoneRowUnsaved.text) } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderSql("person.personphone", PersonphoneFields, PersonphoneRow.read) + SelectBuilderSql("person.personphone", PersonphoneFields.structure, PersonphoneRow.read) } override def selectAll: Stream[ConnectionIO, PersonphoneRow] = { sql"""select "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text from person.personphone""".query(PersonphoneRow.read).stream @@ -88,7 +88,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { .map(_ > 0) } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilder("person.personphone", PersonphoneFields, PersonphoneRow.read) + UpdateBuilder("person.personphone", PersonphoneFields.structure, PersonphoneRow.read) } override def upsert(unsaved: PersonphoneRow): ConnectionIO[PersonphoneRow] = { sql"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala index 2cebd987a3..7c92d368bb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala @@ -27,7 +27,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonphoneFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonphoneFields.structure.fields, map) } override def insert(unsaved: PersonphoneRow): ConnectionIO[PersonphoneRow] = { delay { @@ -65,7 +65,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow } } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderMock(PersonphoneFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersonphoneFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersonphoneRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow } } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonphoneFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonphoneFields.structure.fields, map) } override def upsert(unsaved: PersonphoneRow): ConnectionIO[PersonphoneRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala deleted file mode 100644 index bc16c6660c..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package personphone - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersonphoneStructure[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) - extends Relation[PersonphoneFields, PersonphoneRow, Row] - with PersonphoneFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): PersonphoneStructure[NewRow] = - new PersonphoneStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala index 498a3475ef..6d7dcb3ee7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala @@ -10,12 +10,34 @@ package phonenumbertype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PhonenumbertypeFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PhonenumbertypeFields extends PhonenumbertypeStructure[PhonenumbertypeRow](None, identity, (_, x) => x) +object PhonenumbertypeFields { + val structure: Relation[PhonenumbertypeFields, PhonenumbertypeRow, PhonenumbertypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) + extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] { + + override val fields: PhonenumbertypeFields[Row] = new PhonenumbertypeFields[Row] { + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala index 20a0a8c263..57384d7440 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala @@ -27,7 +27,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { sql"""delete from person.phonenumbertype where "phonenumbertypeid" = ${fromWrite(phonenumbertypeid)(Write.fromPut(PhonenumbertypeId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields) + DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields.structure) } override def insert(unsaved: PhonenumbertypeRow): ConnectionIO[PhonenumbertypeRow] = { sql"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") @@ -70,7 +70,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { new FragmentOps(sql"""COPY person.phonenumbertype("name", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PhonenumbertypeRowUnsaved.text) } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.read) + SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.read) } override def selectAll: Stream[ConnectionIO, PhonenumbertypeRow] = { sql"""select "phonenumbertypeid", "name", "modifieddate"::text from person.phonenumbertype""".query(PhonenumbertypeRow.read).stream @@ -92,7 +92,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { .map(_ > 0) } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.read) + UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.read) } override def upsert(unsaved: PhonenumbertypeRow): ConnectionIO[PhonenumbertypeRow] = { sql"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala index eb4aa698b2..a66f3df98c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala @@ -27,7 +27,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen delay(map.remove(phonenumbertypeid).isDefined) } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields, map) + DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields.structure.fields, map) } override def insert(unsaved: PhonenumbertypeRow): ConnectionIO[PhonenumbertypeRow] = { delay { @@ -65,7 +65,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen } } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderMock(PhonenumbertypeFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PhonenumbertypeFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PhonenumbertypeRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen } } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields, map) + UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields.structure.fields, map) } override def upsert(unsaved: PhonenumbertypeRow): ConnectionIO[PhonenumbertypeRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala deleted file mode 100644 index d97624344a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package phonenumbertype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PhonenumbertypeStructure[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) - extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] - with PhonenumbertypeFields[Row] { outer => - - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): PhonenumbertypeStructure[NewRow] = - new PhonenumbertypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala index e08e645ce9..87e8c80487 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait StateprovinceFields[Row] { val stateprovinceid: IdField[StateprovinceId, Row] @@ -26,5 +28,30 @@ trait StateprovinceFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StateprovinceFields extends StateprovinceStructure[StateprovinceRow](None, identity, (_, x) => x) +object StateprovinceFields { + val structure: Relation[StateprovinceFields, StateprovinceRow, StateprovinceRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) + extends Relation[StateprovinceFields, StateprovinceRow, Row] { + + override val fields: StateprovinceFields[Row] = new StateprovinceFields[Row] { + override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala index fc93d57742..b99537db34 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala @@ -32,7 +32,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { sql"""delete from person.stateprovince where "stateprovinceid" = ${fromWrite(stateprovinceid)(Write.fromPut(StateprovinceId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilder("person.stateprovince", StateprovinceFields) + DeleteBuilder("person.stateprovince", StateprovinceFields.structure) } override def insert(unsaved: StateprovinceRow): ConnectionIO[StateprovinceRow] = { sql"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") @@ -86,7 +86,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { new FragmentOps(sql"""COPY person.stateprovince("stateprovincecode", "countryregioncode", "name", "territoryid", "stateprovinceid", "isonlystateprovinceflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(StateprovinceRowUnsaved.text) } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderSql("person.stateprovince", StateprovinceFields, StateprovinceRow.read) + SelectBuilderSql("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.read) } override def selectAll: Stream[ConnectionIO, StateprovinceRow] = { sql"""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text from person.stateprovince""".query(StateprovinceRow.read).stream @@ -113,7 +113,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { .map(_ > 0) } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilder("person.stateprovince", StateprovinceFields, StateprovinceRow.read) + UpdateBuilder("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.read) } override def upsert(unsaved: StateprovinceRow): ConnectionIO[StateprovinceRow] = { sql"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala index e6346f667a..b06236b42f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala @@ -27,7 +27,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi delay(map.remove(stateprovinceid).isDefined) } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilderMock(DeleteParams.empty, StateprovinceFields, map) + DeleteBuilderMock(DeleteParams.empty, StateprovinceFields.structure.fields, map) } override def insert(unsaved: StateprovinceRow): ConnectionIO[StateprovinceRow] = { delay { @@ -65,7 +65,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi } } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderMock(StateprovinceFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(StateprovinceFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, StateprovinceRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi } } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilderMock(UpdateParams.empty, StateprovinceFields, map) + UpdateBuilderMock(UpdateParams.empty, StateprovinceFields.structure.fields, map) } override def upsert(unsaved: StateprovinceRow): ConnectionIO[StateprovinceRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala deleted file mode 100644 index 269d64f176..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package stateprovince - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class StateprovinceStructure[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) - extends Relation[StateprovinceFields, StateprovinceRow, Row] - with StateprovinceFields[Row] { outer => - - override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): StateprovinceStructure[NewRow] = - new StateprovinceStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala index c138112fbb..1df0730075 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VadditionalcontactinfoViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,39 @@ trait VadditionalcontactinfoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VadditionalcontactinfoViewFields extends VadditionalcontactinfoViewStructure[VadditionalcontactinfoViewRow](None, identity, (_, x) => x) +object VadditionalcontactinfoViewFields { + val structure: Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, VadditionalcontactinfoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) + extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] { + + override val fields: VadditionalcontactinfoViewFields[Row] = new VadditionalcontactinfoViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) + override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) + override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) + override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) + override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) + override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) + override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) + override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.firstname, fields.middlename, fields.lastname, fields.telephonenumber, fields.telephonespecialinstructions, fields.street, fields.city, fields.stateprovince, fields.postalcode, fields.countryregion, fields.homeaddressspecialinstructions, fields.emailaddress, fields.emailspecialinstructions, fields.emailtelephonenumber, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala index bf709da56a..07d684b198 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VadditionalcontactinfoViewRepoImpl extends VadditionalcontactinfoViewRepo { override def select: SelectBuilder[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow] = { - SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow.read) + SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields.structure, VadditionalcontactinfoViewRow.read) } override def selectAll: Stream[ConnectionIO, VadditionalcontactinfoViewRow] = { sql"""select "businessentityid", "firstname", "middlename", "lastname", "telephonenumber", "telephonespecialinstructions", "street", "city", "stateprovince", "postalcode", "countryregion", "homeaddressspecialinstructions", "emailaddress", "emailspecialinstructions", "emailtelephonenumber", "rowguid", "modifieddate"::text from person.vadditionalcontactinfo""".query(VadditionalcontactinfoViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala deleted file mode 100644 index 41f1bb48d2..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vadditionalcontactinfo - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VadditionalcontactinfoViewStructure[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) - extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] - with VadditionalcontactinfoViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) - override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) - override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) - override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) - override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) - override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) - override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) - override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, firstname, middlename, lastname, telephonenumber, telephonespecialinstructions, street, city, stateprovince, postalcode, countryregion, homeaddressspecialinstructions, emailaddress, emailspecialinstructions, emailtelephonenumber, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): VadditionalcontactinfoViewStructure[NewRow] = - new VadditionalcontactinfoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala index 0f86db826d..2ab1ff2c1c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala @@ -13,6 +13,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VstateprovincecountryregionMVFields[Row] { val stateprovinceid: Field[StateprovinceId, Row] @@ -23,5 +25,29 @@ trait VstateprovincecountryregionMVFields[Row] { val countryregioncode: Field[CountryregionId, Row] val countryregionname: Field[Name, Row] } -object VstateprovincecountryregionMVFields extends VstateprovincecountryregionMVStructure[VstateprovincecountryregionMVRow](None, identity, (_, x) => x) +object VstateprovincecountryregionMVFields { + val structure: Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, VstateprovincecountryregionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) + extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] { + + override val fields: VstateprovincecountryregionMVFields[Row] = new VstateprovincecountryregionMVFields[Row] { + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.isonlystateprovinceflag, fields.stateprovincename, fields.territoryid, fields.countryregioncode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala index e62b570266..b99e8116c4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VstateprovincecountryregionMVRepoImpl extends VstateprovincecountryregionMVRepo { override def select: SelectBuilder[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow] = { - SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow.read) + SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields.structure, VstateprovincecountryregionMVRow.read) } override def selectAll: Stream[ConnectionIO, VstateprovincecountryregionMVRow] = { sql"""select "stateprovinceid", "stateprovincecode", "isonlystateprovinceflag", "stateprovincename", "territoryid", "countryregioncode", "countryregionname" from person.vstateprovincecountryregion""".query(VstateprovincecountryregionMVRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala deleted file mode 100644 index 13c82bdeb1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vstateprovincecountryregion - -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VstateprovincecountryregionMVStructure[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) - extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] - with VstateprovincecountryregionMVFields[Row] { outer => - - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, isonlystateprovinceflag, stateprovincename, territoryid, countryregioncode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): VstateprovincecountryregionMVStructure[NewRow] = - new VstateprovincecountryregionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala index 16f06fd6db..3a82b821f7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BomViewFields[Row] { val id: Field[Int, Row] @@ -26,5 +28,32 @@ trait BomViewFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BomViewFields extends BomViewStructure[BomViewRow](None, identity, (_, x) => x) +object BomViewFields { + val structure: Relation[BomViewFields, BomViewRow, BomViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) + extends Relation[BomViewFields, BomViewRow, Row] { + + override val fields: BomViewFields[Row] = new BomViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala index 0b2abe5a5d..272ce8d141 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class BomViewRepoImpl extends BomViewRepo { override def select: SelectBuilder[BomViewFields, BomViewRow] = { - SelectBuilderSql("pr.bom", BomViewFields, BomViewRow.read) + SelectBuilderSql("pr.bom", BomViewFields.structure, BomViewRow.read) } override def selectAll: Stream[ConnectionIO, BomViewRow] = { sql"""select "id", "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text from pr.bom""".query(BomViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala deleted file mode 100644 index 2402b93eab..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package bom - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BomViewStructure[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) - extends Relation[BomViewFields, BomViewRow, Row] - with BomViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): BomViewStructure[NewRow] = - new BomViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala index 78024cc012..cb2b6e6f8a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.culture.CultureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CultureId, Row] @@ -18,5 +20,26 @@ trait CViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala index 815fb6c511..00ca237e79 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("pr.c", CViewFields, CViewRow.read) + SelectBuilderSql("pr.c", CViewFields.structure, CViewRow.read) } override def selectAll: Stream[ConnectionIO, CViewRow] = { sql"""select "id", "cultureid", "name", "modifieddate"::text from pr.c""".query(CViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala deleted file mode 100644 index 126337859a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala index 943ce0ca8b..9593239b2f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.document.DocumentId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DViewFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala index 1cfc7b8804..2c339f986f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("pr.d", DViewFields, DViewRow.read) + SelectBuilderSql("pr.d", DViewFields.structure, DViewRow.read) } override def selectAll: Stream[ConnectionIO, DViewRow] = { sql"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" from pr.d""".query(DViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala deleted file mode 100644 index d6d8e8a044..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package d - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.document.DocumentId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala index 1842ac7f71..25b815cfc5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.production.illustration.IllustrationId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IViewFields[Row] { val id: Field[IllustrationId, Row] @@ -19,5 +21,26 @@ trait IViewFields[Row] { val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IViewFields extends IViewStructure[IViewRow](None, identity, (_, x) => x) +object IViewFields { + val structure: Relation[IViewFields, IViewRow, IViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) + extends Relation[IViewFields, IViewRow, Row] { + + override val fields: IViewFields[Row] = new IViewFields[Row] { + override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala index bf4ec1847b..af8fca42ea 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class IViewRepoImpl extends IViewRepo { override def select: SelectBuilder[IViewFields, IViewRow] = { - SelectBuilderSql("pr.i", IViewFields, IViewRow.read) + SelectBuilderSql("pr.i", IViewFields.structure, IViewRow.read) } override def selectAll: Stream[ConnectionIO, IViewRow] = { sql"""select "id", "illustrationid", "diagram", "modifieddate"::text from pr.i""".query(IViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala deleted file mode 100644 index 7b45575a14..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package i - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.production.illustration.IllustrationId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IViewStructure[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) - extends Relation[IViewFields, IViewRow, Row] - with IViewFields[Row] { outer => - - override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): IViewStructure[NewRow] = - new IViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala index acb810ccab..77032968a6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.location.LocationId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait LViewFields[Row] { val id: Field[LocationId, Row] @@ -20,5 +22,28 @@ trait LViewFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LViewFields extends LViewStructure[LViewRow](None, identity, (_, x) => x) +object LViewFields { + val structure: Relation[LViewFields, LViewRow, LViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) + extends Relation[LViewFields, LViewRow, Row] { + + override val fields: LViewFields[Row] = new LViewFields[Row] { + override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala index dda5c060ce..210f5cb29f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class LViewRepoImpl extends LViewRepo { override def select: SelectBuilder[LViewFields, LViewRow] = { - SelectBuilderSql("pr.l", LViewFields, LViewRow.read) + SelectBuilderSql("pr.l", LViewFields.structure, LViewRow.read) } override def selectAll: Stream[ConnectionIO, LViewRow] = { sql"""select "id", "locationid", "name", "costrate", "availability", "modifieddate"::text from pr.l""".query(LViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala deleted file mode 100644 index 72d2c67f72..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package l - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.location.LocationId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class LViewStructure[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) - extends Relation[LViewFields, LViewRow, Row] - with LViewFields[Row] { outer => - - override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): LViewStructure[NewRow] = - new LViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala index eee5a6bf77..b7307dffeb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala @@ -17,7 +17,9 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[ProductId, Row] @@ -47,5 +49,48 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala index 91b4b1f9de..4cc5bfef26 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pr.p", PViewFields, PViewRow.read) + SelectBuilderSql("pr.p", PViewFields.structure, PViewRow.read) } override def selectAll: Stream[ConnectionIO, PViewRow] = { sql"""select "id", "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text from pr.p""".query(PViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala deleted file mode 100644 index b249873603..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala +++ /dev/null @@ -1,60 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala index f9a40218a3..72d5f4b748 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PcViewFields[Row] { val id: Field[ProductcategoryId, Row] @@ -20,5 +22,27 @@ trait PcViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PcViewFields extends PcViewStructure[PcViewRow](None, identity, (_, x) => x) +object PcViewFields { + val structure: Relation[PcViewFields, PcViewRow, PcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) + extends Relation[PcViewFields, PcViewRow, Row] { + + override val fields: PcViewFields[Row] = new PcViewFields[Row] { + override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala index 8feb9030af..209b68b891 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PcViewRepoImpl extends PcViewRepo { override def select: SelectBuilder[PcViewFields, PcViewRow] = { - SelectBuilderSql("pr.pc", PcViewFields, PcViewRow.read) + SelectBuilderSql("pr.pc", PcViewFields.structure, PcViewRow.read) } override def selectAll: Stream[ConnectionIO, PcViewRow] = { sql"""select "id", "productcategoryid", "name", "rowguid", "modifieddate"::text from pr.pc""".query(PcViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala deleted file mode 100644 index 8e7f82241e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PcViewStructure[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) - extends Relation[PcViewFields, PcViewRow, Row] - with PcViewFields[Row] { outer => - - override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): PcViewStructure[NewRow] = - new PcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala index 01456464b1..5daae96509 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala @@ -10,7 +10,9 @@ package pch import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PchViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PchViewFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PchViewFields extends PchViewStructure[PchViewRow](None, identity, (_, x) => x) +object PchViewFields { + val structure: Relation[PchViewFields, PchViewRow, PchViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) + extends Relation[PchViewFields, PchViewRow, Row] { + + override val fields: PchViewFields[Row] = new PchViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala index 449ea33ce7..9868068b4d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PchViewRepoImpl extends PchViewRepo { override def select: SelectBuilder[PchViewFields, PchViewRow] = { - SelectBuilderSql("pr.pch", PchViewFields, PchViewRow.read) + SelectBuilderSql("pr.pch", PchViewFields.structure, PchViewRow.read) } override def selectAll: Stream[ConnectionIO, PchViewRow] = { sql"""select "id", "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text from pr.pch""".query(PchViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala deleted file mode 100644 index 6d321e3d13..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pch - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PchViewStructure[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) - extends Relation[PchViewFields, PchViewRow, Row] - with PchViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): PchViewStructure[NewRow] = - new PchViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala index 19d97f3f8f..ee50049fa8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.production.productdescription.ProductdescriptionId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdViewFields[Row] { val id: Field[ProductdescriptionId, Row] @@ -19,5 +21,27 @@ trait PdViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PdViewFields extends PdViewStructure[PdViewRow](None, identity, (_, x) => x) +object PdViewFields { + val structure: Relation[PdViewFields, PdViewRow, PdViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) + extends Relation[PdViewFields, PdViewRow, Row] { + + override val fields: PdViewFields[Row] = new PdViewFields[Row] { + override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala index 31d7ef1943..bbbcbdba8d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PdViewRepoImpl extends PdViewRepo { override def select: SelectBuilder[PdViewFields, PdViewRow] = { - SelectBuilderSql("pr.pd", PdViewFields, PdViewRow.read) + SelectBuilderSql("pr.pd", PdViewFields.structure, PdViewRow.read) } override def selectAll: Stream[ConnectionIO, PdViewRow] = { sql"""select "id", "productdescriptionid", "description", "rowguid", "modifieddate"::text from pr.pd""".query(PdViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala deleted file mode 100644 index a98b8bb146..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pd - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productdescription.ProductdescriptionId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdViewStructure[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) - extends Relation[PdViewFields, PdViewRow, Row] - with PdViewFields[Row] { outer => - - override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): PdViewStructure[NewRow] = - new PdViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala index 25cb9b3ba6..740d21033b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdocViewFields[Row] { val id: Field[ProductId, Row] @@ -18,5 +20,26 @@ trait PdocViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object PdocViewFields extends PdocViewStructure[PdocViewRow](None, identity, (_, x) => x) +object PdocViewFields { + val structure: Relation[PdocViewFields, PdocViewRow, PdocViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) + extends Relation[PdocViewFields, PdocViewRow, Row] { + + override val fields: PdocViewFields[Row] = new PdocViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala index 0d4de69773..77c066a704 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PdocViewRepoImpl extends PdocViewRepo { override def select: SelectBuilder[PdocViewFields, PdocViewRow] = { - SelectBuilderSql("pr.pdoc", PdocViewFields, PdocViewRow.read) + SelectBuilderSql("pr.pdoc", PdocViewFields.structure, PdocViewRow.read) } override def selectAll: Stream[ConnectionIO, PdocViewRow] = { sql"""select "id", "productid", "modifieddate"::text, "documentnode" from pr.pdoc""".query(PdocViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala deleted file mode 100644 index 6769d2541e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pdoc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdocViewStructure[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) - extends Relation[PdocViewFields, PdocViewRow, Row] - with PdocViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): PdocViewStructure[NewRow] = - new PdocViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala index 5a54d4bb67..e98fe4de3e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PiViewFields[Row] { val id: Field[ProductId, Row] @@ -24,5 +26,30 @@ trait PiViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PiViewFields extends PiViewStructure[PiViewRow](None, identity, (_, x) => x) +object PiViewFields { + val structure: Relation[PiViewFields, PiViewRow, PiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) + extends Relation[PiViewFields, PiViewRow, Row] { + + override val fields: PiViewFields[Row] = new PiViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala index 64d7f76417..d13a769737 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PiViewRepoImpl extends PiViewRepo { override def select: SelectBuilder[PiViewFields, PiViewRow] = { - SelectBuilderSql("pr.pi", PiViewFields, PiViewRow.read) + SelectBuilderSql("pr.pi", PiViewFields.structure, PiViewRow.read) } override def selectAll: Stream[ConnectionIO, PiViewRow] = { sql"""select "id", "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text from pr.pi""".query(PiViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala deleted file mode 100644 index dcebe88794..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PiViewStructure[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) - extends Relation[PiViewFields, PiViewRow, Row] - with PiViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): PiViewStructure[NewRow] = - new PiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala index f43dea551c..496c9967ca 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala @@ -10,7 +10,9 @@ package plph import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PlphViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PlphViewFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PlphViewFields extends PlphViewStructure[PlphViewRow](None, identity, (_, x) => x) +object PlphViewFields { + val structure: Relation[PlphViewFields, PlphViewRow, PlphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) + extends Relation[PlphViewFields, PlphViewRow, Row] { + + override val fields: PlphViewFields[Row] = new PlphViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala index 34e3468b25..c85bc05f67 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PlphViewRepoImpl extends PlphViewRepo { override def select: SelectBuilder[PlphViewFields, PlphViewRow] = { - SelectBuilderSql("pr.plph", PlphViewFields, PlphViewRow.read) + SelectBuilderSql("pr.plph", PlphViewFields.structure, PlphViewRow.read) } override def selectAll: Stream[ConnectionIO, PlphViewRow] = { sql"""select "id", "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text from pr.plph""".query(PlphViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala deleted file mode 100644 index feed6246a5..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package plph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PlphViewStructure[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) - extends Relation[PlphViewFields, PlphViewRow, Row] - with PlphViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): PlphViewStructure[NewRow] = - new PlphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala index b06665c868..a97787912d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PmViewFields[Row] { val id: Field[ProductmodelId, Row] @@ -24,5 +26,29 @@ trait PmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmViewFields extends PmViewStructure[PmViewRow](None, identity, (_, x) => x) +object PmViewFields { + val structure: Relation[PmViewFields, PmViewRow, PmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) + extends Relation[PmViewFields, PmViewRow, Row] { + + override val fields: PmViewFields[Row] = new PmViewFields[Row] { + override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala index 6d7c2252be..1acdbcf6d0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PmViewRepoImpl extends PmViewRepo { override def select: SelectBuilder[PmViewFields, PmViewRow] = { - SelectBuilderSql("pr.pm", PmViewFields, PmViewRow.read) + SelectBuilderSql("pr.pm", PmViewFields.structure, PmViewRow.read) } override def selectAll: Stream[ConnectionIO, PmViewRow] = { sql"""select "id", "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text from pr.pm""".query(PmViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala deleted file mode 100644 index 3197df10d2..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PmViewStructure[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) - extends Relation[PmViewFields, PmViewRow, Row] - with PmViewFields[Row] { outer => - - override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): PmViewStructure[NewRow] = - new PmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala index 2d29d5ad64..344c7c720d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmiViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] val illustrationid: Field[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmiViewFields extends PmiViewStructure[PmiViewRow](None, identity, (_, x) => x) +object PmiViewFields { + val structure: Relation[PmiViewFields, PmiViewRow, PmiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) + extends Relation[PmiViewFields, PmiViewRow, Row] { + + override val fields: PmiViewFields[Row] = new PmiViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala index 1e29c57235..c527b3a74b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PmiViewRepoImpl extends PmiViewRepo { override def select: SelectBuilder[PmiViewFields, PmiViewRow] = { - SelectBuilderSql("pr.pmi", PmiViewFields, PmiViewRow.read) + SelectBuilderSql("pr.pmi", PmiViewFields.structure, PmiViewRow.read) } override def selectAll: Stream[ConnectionIO, PmiViewRow] = { sql"""select "productmodelid", "illustrationid", "modifieddate"::text from pr.pmi""".query(PmiViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala deleted file mode 100644 index 03c692bb06..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmiViewStructure[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) - extends Relation[PmiViewFields, PmiViewRow, Row] - with PmiViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): PmiViewStructure[NewRow] = - new PmiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala index ab1d72e3bd..9c803e310c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmpdcViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -19,5 +21,26 @@ trait PmpdcViewFields[Row] { val cultureid: Field[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmpdcViewFields extends PmpdcViewStructure[PmpdcViewRow](None, identity, (_, x) => x) +object PmpdcViewFields { + val structure: Relation[PmpdcViewFields, PmpdcViewRow, PmpdcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) + extends Relation[PmpdcViewFields, PmpdcViewRow, Row] { + + override val fields: PmpdcViewFields[Row] = new PmpdcViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala index 316067e0d5..6fa02a8d43 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PmpdcViewRepoImpl extends PmpdcViewRepo { override def select: SelectBuilder[PmpdcViewFields, PmpdcViewRow] = { - SelectBuilderSql("pr.pmpdc", PmpdcViewFields, PmpdcViewRow.read) + SelectBuilderSql("pr.pmpdc", PmpdcViewFields.structure, PmpdcViewRow.read) } override def selectAll: Stream[ConnectionIO, PmpdcViewRow] = { sql"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text from pr.pmpdc""".query(PmpdcViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala deleted file mode 100644 index a96593a81b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmpdc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmpdcViewStructure[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) - extends Relation[PmpdcViewFields, PmpdcViewRow, Row] - with PmpdcViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): PmpdcViewStructure[NewRow] = - new PmpdcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala index 50c9cbab5b..73dc761379 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.productphoto.ProductphotoId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[ProductphotoId, Row] @@ -22,5 +24,29 @@ trait PpViewFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala index 2a4d5b967e..58ef9e7506 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pr.pp", PpViewFields, PpViewRow.read) + SelectBuilderSql("pr.pp", PpViewFields.structure, PpViewRow.read) } override def selectAll: Stream[ConnectionIO, PpViewRow] = { sql"""select "id", "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text from pr.pp""".query(PpViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala deleted file mode 100644 index 2d84dc92fc..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pp - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.productphoto.ProductphotoId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala index c7d4a423a0..ecca1a5053 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PppViewFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,26 @@ trait PppViewFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PppViewFields extends PppViewStructure[PppViewRow](None, identity, (_, x) => x) +object PppViewFields { + val structure: Relation[PppViewFields, PppViewRow, PppViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) + extends Relation[PppViewFields, PppViewRow, Row] { + + override val fields: PppViewFields[Row] = new PppViewFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala index 680a5c7ef9..9efae59b14 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PppViewRepoImpl extends PppViewRepo { override def select: SelectBuilder[PppViewFields, PppViewRow] = { - SelectBuilderSql("pr.ppp", PppViewFields, PppViewRow.read) + SelectBuilderSql("pr.ppp", PppViewFields.structure, PppViewRow.read) } override def selectAll: Stream[ConnectionIO, PppViewRow] = { sql"""select "productid", "productphotoid", "primary", "modifieddate"::text from pr.ppp""".query(PppViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala deleted file mode 100644 index 146a003b99..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package ppp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PppViewStructure[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) - extends Relation[PppViewFields, PppViewRow, Row] - with PppViewFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): PppViewStructure[NewRow] = - new PppViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala index 2114439bc5..89a5e6ac65 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productreview.ProductreviewId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PrViewFields[Row] { val id: Field[ProductreviewId, Row] @@ -25,5 +27,31 @@ trait PrViewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PrViewFields extends PrViewStructure[PrViewRow](None, identity, (_, x) => x) +object PrViewFields { + val structure: Relation[PrViewFields, PrViewRow, PrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) + extends Relation[PrViewFields, PrViewRow, Row] { + + override val fields: PrViewFields[Row] = new PrViewFields[Row] { + override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala index 22e94701b9..cb479156ae 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PrViewRepoImpl extends PrViewRepo { override def select: SelectBuilder[PrViewFields, PrViewRow] = { - SelectBuilderSql("pr.pr", PrViewFields, PrViewRow.read) + SelectBuilderSql("pr.pr", PrViewFields.structure, PrViewRow.read) } override def selectAll: Stream[ConnectionIO, PrViewRow] = { sql"""select "id", "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text from pr.pr""".query(PrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala deleted file mode 100644 index f0f8b095c1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productreview.ProductreviewId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PrViewStructure[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) - extends Relation[PrViewFields, PrViewRow, Row] - with PrViewFields[Row] { outer => - - override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): PrViewStructure[NewRow] = - new PrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala index 86ad4f55ca..8ad42b3098 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.production.productcategory.ProductcategoryId import adventureworks.production.productsubcategory.ProductsubcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PscViewFields[Row] { val id: Field[ProductsubcategoryId, Row] @@ -22,5 +24,28 @@ trait PscViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PscViewFields extends PscViewStructure[PscViewRow](None, identity, (_, x) => x) +object PscViewFields { + val structure: Relation[PscViewFields, PscViewRow, PscViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) + extends Relation[PscViewFields, PscViewRow, Row] { + + override val fields: PscViewFields[Row] = new PscViewFields[Row] { + override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala index 160bb09628..3b18a769d6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PscViewRepoImpl extends PscViewRepo { override def select: SelectBuilder[PscViewFields, PscViewRow] = { - SelectBuilderSql("pr.psc", PscViewFields, PscViewRow.read) + SelectBuilderSql("pr.psc", PscViewFields.structure, PscViewRow.read) } override def selectAll: Stream[ConnectionIO, PscViewRow] = { sql"""select "id", "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text from pr.psc""".query(PscViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala deleted file mode 100644 index 136e30a01b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package psc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PscViewStructure[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) - extends Relation[PscViewFields, PscViewRow, Row] - with PscViewFields[Row] { outer => - - override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): PscViewStructure[NewRow] = - new PscViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala index 3e4dca91bd..e1b396328c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[ScrapreasonId, Row] @@ -18,5 +20,26 @@ trait SrViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala index 611ec40674..d1dc0599af 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("pr.sr", SrViewFields, SrViewRow.read) + SelectBuilderSql("pr.sr", SrViewFields.structure, SrViewRow.read) } override def selectAll: Stream[ConnectionIO, SrViewRow] = { sql"""select "id", "scrapreasonid", "name", "modifieddate"::text from pr.sr""".query(SrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala deleted file mode 100644 index 9355670f37..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala index ec2fbac470..595df76064 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.production.transactionhistory.TransactionhistoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThViewFields[Row] { val id: Field[TransactionhistoryId, Row] @@ -24,5 +26,32 @@ trait ThViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThViewFields extends ThViewStructure[ThViewRow](None, identity, (_, x) => x) +object ThViewFields { + val structure: Relation[ThViewFields, ThViewRow, ThViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) + extends Relation[ThViewFields, ThViewRow, Row] { + + override val fields: ThViewFields[Row] = new ThViewFields[Row] { + override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala index 1f4b69eb1b..80c767aa48 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class ThViewRepoImpl extends ThViewRepo { override def select: SelectBuilder[ThViewFields, ThViewRow] = { - SelectBuilderSql("pr.th", ThViewFields, ThViewRow.read) + SelectBuilderSql("pr.th", ThViewFields.structure, ThViewRow.read) } override def selectAll: Stream[ConnectionIO, ThViewRow] = { sql"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from pr.th""".query(ThViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala deleted file mode 100644 index 715ac72ef2..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package th - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.transactionhistory.TransactionhistoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThViewStructure[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) - extends Relation[ThViewFields, ThViewRow, Row] - with ThViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): ThViewStructure[NewRow] = - new ThViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala index 0e2c704519..d839c3e7f6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala @@ -10,6 +10,8 @@ package tha import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThaViewFields[Row] { val id: Field[TransactionhistoryarchiveId, Row] @@ -23,5 +25,32 @@ trait ThaViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThaViewFields extends ThaViewStructure[ThaViewRow](None, identity, (_, x) => x) +object ThaViewFields { + val structure: Relation[ThaViewFields, ThaViewRow, ThaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) + extends Relation[ThaViewFields, ThaViewRow, Row] { + + override val fields: ThaViewFields[Row] = new ThaViewFields[Row] { + override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala index 5f7ceb55c0..e8b101dcc4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class ThaViewRepoImpl extends ThaViewRepo { override def select: SelectBuilder[ThaViewFields, ThaViewRow] = { - SelectBuilderSql("pr.tha", ThaViewFields, ThaViewRow.read) + SelectBuilderSql("pr.tha", ThaViewFields.structure, ThaViewRow.read) } override def selectAll: Stream[ConnectionIO, ThaViewRow] = { sql"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from pr.tha""".query(ThaViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala deleted file mode 100644 index 21ed397cc7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package tha - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThaViewStructure[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) - extends Relation[ThaViewFields, ThaViewRow, Row] - with ThaViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): ThaViewStructure[NewRow] = - new ThaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala index b4cd755285..c614cac62f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait UmViewFields[Row] { val id: Field[UnitmeasureId, Row] @@ -18,5 +20,26 @@ trait UmViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UmViewFields extends UmViewStructure[UmViewRow](None, identity, (_, x) => x) +object UmViewFields { + val structure: Relation[UmViewFields, UmViewRow, UmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) + extends Relation[UmViewFields, UmViewRow, Row] { + + override val fields: UmViewFields[Row] = new UmViewFields[Row] { + override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala index cba6b60e0c..c2709b750f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class UmViewRepoImpl extends UmViewRepo { override def select: SelectBuilder[UmViewFields, UmViewRow] = { - SelectBuilderSql("pr.um", UmViewFields, UmViewRow.read) + SelectBuilderSql("pr.um", UmViewFields.structure, UmViewRow.read) } override def selectAll: Stream[ConnectionIO, UmViewRow] = { sql"""select "id", "unitmeasurecode", "name", "modifieddate"::text from pr.um""".query(UmViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala deleted file mode 100644 index 8d78e17361..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package um - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class UmViewStructure[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) - extends Relation[UmViewFields, UmViewRow, Row] - with UmViewFields[Row] { outer => - - override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): UmViewStructure[NewRow] = - new UmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala index ea86753bf7..225ac16ca5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WViewFields[Row] { val id: Field[WorkorderId, Row] @@ -27,5 +29,32 @@ trait WViewFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WViewFields extends WViewStructure[WViewRow](None, identity, (_, x) => x) +object WViewFields { + val structure: Relation[WViewFields, WViewRow, WViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) + extends Relation[WViewFields, WViewRow, Row] { + + override val fields: WViewFields[Row] = new WViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala index cbd70b04de..4ec129a262 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class WViewRepoImpl extends WViewRepo { override def select: SelectBuilder[WViewFields, WViewRow] = { - SelectBuilderSql("pr.w", WViewFields, WViewRow.read) + SelectBuilderSql("pr.w", WViewFields.structure, WViewRow.read) } override def selectAll: Stream[ConnectionIO, WViewRow] = { sql"""select "id", "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text from pr.w""".query(WViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala deleted file mode 100644 index 93b4ed0475..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package w - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WViewStructure[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) - extends Relation[WViewFields, WViewRow, Row] - with WViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): WViewStructure[NewRow] = - new WViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala index 641cbd9976..3d05dacd9d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WrViewFields[Row] { val id: Field[WorkorderId, Row] @@ -29,5 +31,35 @@ trait WrViewFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WrViewFields extends WrViewStructure[WrViewRow](None, identity, (_, x) => x) +object WrViewFields { + val structure: Relation[WrViewFields, WrViewRow, WrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) + extends Relation[WrViewFields, WrViewRow, Row] { + + override val fields: WrViewFields[Row] = new WrViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala index 06eddceafa..f8d2c223f4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class WrViewRepoImpl extends WrViewRepo { override def select: SelectBuilder[WrViewFields, WrViewRow] = { - SelectBuilderSql("pr.wr", WrViewFields, WrViewRow.read) + SelectBuilderSql("pr.wr", WrViewFields.structure, WrViewRow.read) } override def selectAll: Stream[ConnectionIO, WrViewRow] = { sql"""select "id", "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text from pr.wr""".query(WrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala deleted file mode 100644 index 4d1eac32cc..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package wr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WrViewStructure[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) - extends Relation[WrViewFields, WrViewRow, Row] - with WrViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): WrViewStructure[NewRow] = - new WrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala index 5182f7e7aa..9cd859ebed 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BillofmaterialsFields[Row] { val billofmaterialsid: IdField[Int, Row] @@ -26,5 +28,31 @@ trait BillofmaterialsFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BillofmaterialsFields extends BillofmaterialsStructure[BillofmaterialsRow](None, identity, (_, x) => x) +object BillofmaterialsFields { + val structure: Relation[BillofmaterialsFields, BillofmaterialsRow, BillofmaterialsRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) + extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] { + + override val fields: BillofmaterialsFields[Row] = new BillofmaterialsFields[Row] { + override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala index 5adf1d9980..822aee9cf7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala @@ -30,7 +30,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { sql"""delete from production.billofmaterials where "billofmaterialsid" = ${fromWrite(billofmaterialsid)(Write.fromPut(Meta.IntMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilder("production.billofmaterials", BillofmaterialsFields) + DeleteBuilder("production.billofmaterials", BillofmaterialsFields.structure) } override def insert(unsaved: BillofmaterialsRow): ConnectionIO[BillofmaterialsRow] = { sql"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") @@ -85,7 +85,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { new FragmentOps(sql"""COPY production.billofmaterials("productassemblyid", "componentid", "enddate", "unitmeasurecode", "bomlevel", "billofmaterialsid", "startdate", "perassemblyqty", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(BillofmaterialsRowUnsaved.text) } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderSql("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.read) + SelectBuilderSql("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.read) } override def selectAll: Stream[ConnectionIO, BillofmaterialsRow] = { sql"""select "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text from production.billofmaterials""".query(BillofmaterialsRow.read).stream @@ -113,7 +113,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { .map(_ > 0) } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilder("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.read) + UpdateBuilder("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.read) } override def upsert(unsaved: BillofmaterialsRow): ConnectionIO[BillofmaterialsRow] = { sql"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala index 8a73c54faa..0da2e8f9a0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala @@ -27,7 +27,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof delay(map.remove(billofmaterialsid).isDefined) } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields, map) + DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields.structure.fields, map) } override def insert(unsaved: BillofmaterialsRow): ConnectionIO[BillofmaterialsRow] = { delay { @@ -65,7 +65,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof } } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderMock(BillofmaterialsFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(BillofmaterialsFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, BillofmaterialsRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof } } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields, map) + UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields.structure.fields, map) } override def upsert(unsaved: BillofmaterialsRow): ConnectionIO[BillofmaterialsRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala deleted file mode 100644 index 60079addb8..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package billofmaterials - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BillofmaterialsStructure[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) - extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] - with BillofmaterialsFields[Row] { outer => - - override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): BillofmaterialsStructure[NewRow] = - new BillofmaterialsStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala index ffaacc2a52..4584e06fdf 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala @@ -10,12 +10,34 @@ package culture import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CultureFields[Row] { val cultureid: IdField[CultureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CultureFields extends CultureStructure[CultureRow](None, identity, (_, x) => x) +object CultureFields { + val structure: Relation[CultureFields, CultureRow, CultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) + extends Relation[CultureFields, CultureRow, Row] { + + override val fields: CultureFields[Row] = new CultureFields[Row] { + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala index 79d623dacd..a7d12a0544 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala @@ -27,7 +27,7 @@ class CultureRepoImpl extends CultureRepo { sql"""delete from production.culture where "cultureid" = ${fromWrite(cultureid)(Write.fromPut(CultureId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilder("production.culture", CultureFields) + DeleteBuilder("production.culture", CultureFields.structure) } override def insert(unsaved: CultureRow): ConnectionIO[CultureRow] = { sql"""insert into production.culture("cultureid", "name", "modifieddate") @@ -67,7 +67,7 @@ class CultureRepoImpl extends CultureRepo { new FragmentOps(sql"""COPY production.culture("cultureid", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CultureRowUnsaved.text) } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderSql("production.culture", CultureFields, CultureRow.read) + SelectBuilderSql("production.culture", CultureFields.structure, CultureRow.read) } override def selectAll: Stream[ConnectionIO, CultureRow] = { sql"""select "cultureid", "name", "modifieddate"::text from production.culture""".query(CultureRow.read).stream @@ -89,7 +89,7 @@ class CultureRepoImpl extends CultureRepo { .map(_ > 0) } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilder("production.culture", CultureFields, CultureRow.read) + UpdateBuilder("production.culture", CultureFields.structure, CultureRow.read) } override def upsert(unsaved: CultureRow): ConnectionIO[CultureRow] = { sql"""insert into production.culture("cultureid", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala index c43ac8587e..5187385757 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala @@ -27,7 +27,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], delay(map.remove(cultureid).isDefined) } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilderMock(DeleteParams.empty, CultureFields, map) + DeleteBuilderMock(DeleteParams.empty, CultureFields.structure.fields, map) } override def insert(unsaved: CultureRow): ConnectionIO[CultureRow] = { delay { @@ -65,7 +65,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], } } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderMock(CultureFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CultureFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CultureRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], } } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilderMock(UpdateParams.empty, CultureFields, map) + UpdateBuilderMock(UpdateParams.empty, CultureFields.structure.fields, map) } override def upsert(unsaved: CultureRow): ConnectionIO[CultureRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala deleted file mode 100644 index 6267bec327..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package culture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CultureStructure[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) - extends Relation[CultureFields, CultureRow, Row] - with CultureFields[Row] { outer => - - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): CultureStructure[NewRow] = - new CultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala index 1731128fa6..0a3da82b3c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DocumentFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DocumentFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object DocumentFields extends DocumentStructure[DocumentRow](None, identity, (_, x) => x) +object DocumentFields { + val structure: Relation[DocumentFields, DocumentRow, DocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) + extends Relation[DocumentFields, DocumentRow, Row] { + + override val fields: DocumentFields[Row] = new DocumentFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala index a86149db5c..e4e7bbed52 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala @@ -32,7 +32,7 @@ class DocumentRepoImpl extends DocumentRepo { sql"""delete from production.document where "documentnode" = ${fromWrite(documentnode)(Write.fromPut(DocumentId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilder("production.document", DocumentFields) + DeleteBuilder("production.document", DocumentFields.structure) } override def insert(unsaved: DocumentRow): ConnectionIO[DocumentRow] = { sql"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") @@ -94,7 +94,7 @@ class DocumentRepoImpl extends DocumentRepo { new FragmentOps(sql"""COPY production.document("title", "owner", "filename", "fileextension", "revision", "status", "documentsummary", "document", "folderflag", "changenumber", "rowguid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(DocumentRowUnsaved.text) } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderSql("production.document", DocumentFields, DocumentRow.read) + SelectBuilderSql("production.document", DocumentFields.structure, DocumentRow.read) } override def selectAll: Stream[ConnectionIO, DocumentRow] = { sql"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" from production.document""".query(DocumentRow.read).stream @@ -132,7 +132,7 @@ class DocumentRepoImpl extends DocumentRepo { .map(_ > 0) } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilder("production.document", DocumentFields, DocumentRow.read) + UpdateBuilder("production.document", DocumentFields.structure, DocumentRow.read) } override def upsert(unsaved: DocumentRow): ConnectionIO[DocumentRow] = { sql"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala index 81fa469245..3dd1271cb1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala @@ -28,7 +28,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], delay(map.remove(documentnode).isDefined) } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, DocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, DocumentFields.structure.fields, map) } override def insert(unsaved: DocumentRow): ConnectionIO[DocumentRow] = { delay { @@ -66,7 +66,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], } } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderMock(DocumentFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(DocumentFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, DocumentRow] = { Stream.emits(map.values.toList) @@ -92,7 +92,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], } } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, DocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, DocumentFields.structure.fields, map) } override def upsert(unsaved: DocumentRow): ConnectionIO[DocumentRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala deleted file mode 100644 index 2f58d1e1d0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package document - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DocumentStructure[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) - extends Relation[DocumentFields, DocumentRow, Row] - with DocumentFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): DocumentStructure[NewRow] = - new DocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala index 7c45043058..abe779001b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala @@ -10,13 +10,35 @@ package illustration import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IllustrationFields[Row] { val illustrationid: IdField[IllustrationId, Row] val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IllustrationFields extends IllustrationStructure[IllustrationRow](None, identity, (_, x) => x) +object IllustrationFields { + val structure: Relation[IllustrationFields, IllustrationRow, IllustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) + extends Relation[IllustrationFields, IllustrationRow, Row] { + + override val fields: IllustrationFields[Row] = new IllustrationFields[Row] { + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala index 4514bc9eb7..e1cbd45388 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala @@ -27,7 +27,7 @@ class IllustrationRepoImpl extends IllustrationRepo { sql"""delete from production.illustration where "illustrationid" = ${fromWrite(illustrationid)(Write.fromPut(IllustrationId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilder("production.illustration", IllustrationFields) + DeleteBuilder("production.illustration", IllustrationFields.structure) } override def insert(unsaved: IllustrationRow): ConnectionIO[IllustrationRow] = { sql"""insert into production.illustration("illustrationid", "diagram", "modifieddate") @@ -70,7 +70,7 @@ class IllustrationRepoImpl extends IllustrationRepo { new FragmentOps(sql"""COPY production.illustration("diagram", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(IllustrationRowUnsaved.text) } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderSql("production.illustration", IllustrationFields, IllustrationRow.read) + SelectBuilderSql("production.illustration", IllustrationFields.structure, IllustrationRow.read) } override def selectAll: Stream[ConnectionIO, IllustrationRow] = { sql"""select "illustrationid", "diagram", "modifieddate"::text from production.illustration""".query(IllustrationRow.read).stream @@ -92,7 +92,7 @@ class IllustrationRepoImpl extends IllustrationRepo { .map(_ > 0) } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilder("production.illustration", IllustrationFields, IllustrationRow.read) + UpdateBuilder("production.illustration", IllustrationFields.structure, IllustrationRow.read) } override def upsert(unsaved: IllustrationRow): ConnectionIO[IllustrationRow] = { sql"""insert into production.illustration("illustrationid", "diagram", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala index 6339c5d37f..25929a3d20 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala @@ -27,7 +27,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration delay(map.remove(illustrationid).isDefined) } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, IllustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, IllustrationFields.structure.fields, map) } override def insert(unsaved: IllustrationRow): ConnectionIO[IllustrationRow] = { delay { @@ -65,7 +65,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration } } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderMock(IllustrationFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(IllustrationFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, IllustrationRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration } } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, IllustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, IllustrationFields.structure.fields, map) } override def upsert(unsaved: IllustrationRow): ConnectionIO[IllustrationRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala deleted file mode 100644 index 9258b270be..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package illustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IllustrationStructure[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) - extends Relation[IllustrationFields, IllustrationRow, Row] - with IllustrationFields[Row] { outer => - - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): IllustrationStructure[NewRow] = - new IllustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationFields.scala index 447ab8fcfd..d18037c0ce 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationFields.scala @@ -10,7 +10,9 @@ package location import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait LocationFields[Row] { val locationid: IdField[LocationId, Row] @@ -19,5 +21,27 @@ trait LocationFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LocationFields extends LocationStructure[LocationRow](None, identity, (_, x) => x) +object LocationFields { + val structure: Relation[LocationFields, LocationRow, LocationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) + extends Relation[LocationFields, LocationRow, Row] { + + override val fields: LocationFields[Row] = new LocationFields[Row] { + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala index 8da99aed0c..d40a5d3a28 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala @@ -28,7 +28,7 @@ class LocationRepoImpl extends LocationRepo { sql"""delete from production.location where "locationid" = ${fromWrite(locationid)(Write.fromPut(LocationId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilder("production.location", LocationFields) + DeleteBuilder("production.location", LocationFields.structure) } override def insert(unsaved: LocationRow): ConnectionIO[LocationRow] = { sql"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") @@ -79,7 +79,7 @@ class LocationRepoImpl extends LocationRepo { new FragmentOps(sql"""COPY production.location("name", "locationid", "costrate", "availability", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(LocationRowUnsaved.text) } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderSql("production.location", LocationFields, LocationRow.read) + SelectBuilderSql("production.location", LocationFields.structure, LocationRow.read) } override def selectAll: Stream[ConnectionIO, LocationRow] = { sql"""select "locationid", "name", "costrate", "availability", "modifieddate"::text from production.location""".query(LocationRow.read).stream @@ -103,7 +103,7 @@ class LocationRepoImpl extends LocationRepo { .map(_ > 0) } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilder("production.location", LocationFields, LocationRow.read) + UpdateBuilder("production.location", LocationFields.structure, LocationRow.read) } override def upsert(unsaved: LocationRow): ConnectionIO[LocationRow] = { sql"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala index 0ff88c5c58..08bb2f1914 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala @@ -27,7 +27,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], delay(map.remove(locationid).isDefined) } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilderMock(DeleteParams.empty, LocationFields, map) + DeleteBuilderMock(DeleteParams.empty, LocationFields.structure.fields, map) } override def insert(unsaved: LocationRow): ConnectionIO[LocationRow] = { delay { @@ -65,7 +65,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], } } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderMock(LocationFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(LocationFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, LocationRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], } } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilderMock(UpdateParams.empty, LocationFields, map) + UpdateBuilderMock(UpdateParams.empty, LocationFields.structure.fields, map) } override def upsert(unsaved: LocationRow): ConnectionIO[LocationRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala deleted file mode 100644 index 09cb5efc34..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package location - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class LocationStructure[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) - extends Relation[LocationFields, LocationRow, Row] - with LocationFields[Row] { outer => - - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): LocationStructure[NewRow] = - new LocationStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductFields.scala index 1a5d92a40f..c57ee41926 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductFields.scala @@ -16,8 +16,10 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductFields[Row] { val productid: IdField[ProductId, Row] @@ -46,5 +48,47 @@ trait ProductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductFields extends ProductStructure[ProductRow](None, identity, (_, x) => x) +object ProductFields { + val structure: Relation[ProductFields, ProductRow, ProductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) + extends Relation[ProductFields, ProductRow, Row] { + + override val fields: ProductFields[Row] = new ProductFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala index 090c3f43e2..91cc02d053 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala @@ -34,7 +34,7 @@ class ProductRepoImpl extends ProductRepo { sql"""delete from production.product where "productid" = ${fromWrite(productid)(Write.fromPut(ProductId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilder("production.product", ProductFields) + DeleteBuilder("production.product", ProductFields.structure) } override def insert(unsaved: ProductRow): ConnectionIO[ProductRow] = { sql"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") @@ -108,7 +108,7 @@ class ProductRepoImpl extends ProductRepo { new FragmentOps(sql"""COPY production.product("name", "productnumber", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "productid", "makeflag", "finishedgoodsflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductRowUnsaved.text) } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderSql("production.product", ProductFields, ProductRow.read) + SelectBuilderSql("production.product", ProductFields.structure, ProductRow.read) } override def selectAll: Stream[ConnectionIO, ProductRow] = { sql"""select "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text from production.product""".query(ProductRow.read).stream @@ -152,7 +152,7 @@ class ProductRepoImpl extends ProductRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilder("production.product", ProductFields, ProductRow.read) + UpdateBuilder("production.product", ProductFields.structure, ProductRow.read) } override def upsert(unsaved: ProductRow): ConnectionIO[ProductRow] = { sql"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala index 1e755f88f2..5eca13608f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala @@ -27,7 +27,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], delay(map.remove(productid).isDefined) } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductFields.structure.fields, map) } override def insert(unsaved: ProductRow): ConnectionIO[ProductRow] = { delay { @@ -65,7 +65,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], } } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderMock(ProductFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], } } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductFields.structure.fields, map) } override def upsert(unsaved: ProductRow): ConnectionIO[ProductRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala deleted file mode 100644 index 76c4f296d7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala +++ /dev/null @@ -1,59 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package product - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductStructure[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) - extends Relation[ProductFields, ProductRow, Row] - with ProductFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): ProductStructure[NewRow] = - new ProductStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala index d0503b3cac..2d59346265 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductcategoryFields[Row] { val productcategoryid: IdField[ProductcategoryId, Row] @@ -19,5 +21,26 @@ trait ProductcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcategoryFields extends ProductcategoryStructure[ProductcategoryRow](None, identity, (_, x) => x) +object ProductcategoryFields { + val structure: Relation[ProductcategoryFields, ProductcategoryRow, ProductcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) + extends Relation[ProductcategoryFields, ProductcategoryRow, Row] { + + override val fields: ProductcategoryFields[Row] = new ProductcategoryFields[Row] { + override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala index 4a8d3b5fe1..0157681bf8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala @@ -28,7 +28,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { sql"""delete from production.productcategory where "productcategoryid" = ${fromWrite(productcategoryid)(Write.fromPut(ProductcategoryId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilder("production.productcategory", ProductcategoryFields) + DeleteBuilder("production.productcategory", ProductcategoryFields.structure) } override def insert(unsaved: ProductcategoryRow): ConnectionIO[ProductcategoryRow] = { sql"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { new FragmentOps(sql"""COPY production.productcategory("name", "productcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductcategoryRowUnsaved.text) } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderSql("production.productcategory", ProductcategoryFields, ProductcategoryRow.read) + SelectBuilderSql("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.read) } override def selectAll: Stream[ConnectionIO, ProductcategoryRow] = { sql"""select "productcategoryid", "name", "rowguid", "modifieddate"::text from production.productcategory""".query(ProductcategoryRow.read).stream @@ -98,7 +98,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilder("production.productcategory", ProductcategoryFields, ProductcategoryRow.read) + UpdateBuilder("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.read) } override def upsert(unsaved: ProductcategoryRow): ConnectionIO[ProductcategoryRow] = { sql"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala index 4cd9fcbbee..8607db39d7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala @@ -27,7 +27,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc delay(map.remove(productcategoryid).isDefined) } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields.structure.fields, map) } override def insert(unsaved: ProductcategoryRow): ConnectionIO[ProductcategoryRow] = { delay { @@ -65,7 +65,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc } } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderMock(ProductcategoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductcategoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductcategoryRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc } } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductcategoryRow): ConnectionIO[ProductcategoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala deleted file mode 100644 index 64c9e81a9e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) - extends Relation[ProductcategoryFields, ProductcategoryRow, Row] - with ProductcategoryFields[Row] { outer => - - override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): ProductcategoryStructure[NewRow] = - new ProductcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala index cf5ff0d103..0da0e973da 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala @@ -10,8 +10,10 @@ package productcosthistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductcosthistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductcosthistoryFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcosthistoryFields extends ProductcosthistoryStructure[ProductcosthistoryRow](None, identity, (_, x) => x) +object ProductcosthistoryFields { + val structure: Relation[ProductcosthistoryFields, ProductcosthistoryRow, ProductcosthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) + extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] { + + override val fields: ProductcosthistoryFields[Row] = new ProductcosthistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala index 5cf164bc5f..fbba95a075 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala @@ -28,7 +28,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { sql"""delete from production.productcosthistory where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "startdate" = ${fromWrite(compositeId.startdate)(Write.fromPut(TypoLocalDateTime.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilder("production.productcosthistory", ProductcosthistoryFields) + DeleteBuilder("production.productcosthistory", ProductcosthistoryFields.structure) } override def insert(unsaved: ProductcosthistoryRow): ConnectionIO[ProductcosthistoryRow] = { sql"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") @@ -70,7 +70,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { new FragmentOps(sql"""COPY production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductcosthistoryRowUnsaved.text) } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.read) + SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.read) } override def selectAll: Stream[ConnectionIO, ProductcosthistoryRow] = { sql"""select "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text from production.productcosthistory""".query(ProductcosthistoryRow.read).stream @@ -90,7 +90,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilder("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.read) + UpdateBuilder("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.read) } override def upsert(unsaved: ProductcosthistoryRow): ConnectionIO[ProductcosthistoryRow] = { sql"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala index 49f3b133c4..3fe85e82db 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala @@ -27,7 +27,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields.structure.fields, map) } override def insert(unsaved: ProductcosthistoryRow): ConnectionIO[ProductcosthistoryRow] = { delay { @@ -65,7 +65,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, } } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderMock(ProductcosthistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductcosthistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductcosthistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, } } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields.structure.fields, map) } override def upsert(unsaved: ProductcosthistoryRow): ConnectionIO[ProductcosthistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala deleted file mode 100644 index 3ea558bcaa..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcosthistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductcosthistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) - extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] - with ProductcosthistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): ProductcosthistoryStructure[NewRow] = - new ProductcosthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala index e1a2b59269..75a2e533ca 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala @@ -10,7 +10,9 @@ package productdescription import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdescriptionFields[Row] { val productdescriptionid: IdField[ProductdescriptionId, Row] @@ -18,5 +20,26 @@ trait ProductdescriptionFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductdescriptionFields extends ProductdescriptionStructure[ProductdescriptionRow](None, identity, (_, x) => x) +object ProductdescriptionFields { + val structure: Relation[ProductdescriptionFields, ProductdescriptionRow, ProductdescriptionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) + extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] { + + override val fields: ProductdescriptionFields[Row] = new ProductdescriptionFields[Row] { + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala index 918e391158..e5f1a08535 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala @@ -28,7 +28,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { sql"""delete from production.productdescription where "productdescriptionid" = ${fromWrite(productdescriptionid)(Write.fromPut(ProductdescriptionId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilder("production.productdescription", ProductdescriptionFields) + DeleteBuilder("production.productdescription", ProductdescriptionFields.structure) } override def insert(unsaved: ProductdescriptionRow): ConnectionIO[ProductdescriptionRow] = { sql"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { new FragmentOps(sql"""COPY production.productdescription("description", "productdescriptionid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductdescriptionRowUnsaved.text) } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderSql("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.read) + SelectBuilderSql("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.read) } override def selectAll: Stream[ConnectionIO, ProductdescriptionRow] = { sql"""select "productdescriptionid", "description", "rowguid", "modifieddate"::text from production.productdescription""".query(ProductdescriptionRow.read).stream @@ -98,7 +98,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilder("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.read) + UpdateBuilder("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.read) } override def upsert(unsaved: ProductdescriptionRow): ConnectionIO[ProductdescriptionRow] = { sql"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala index c73c912d24..4da3343002 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala @@ -27,7 +27,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, delay(map.remove(productdescriptionid).isDefined) } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields.structure.fields, map) } override def insert(unsaved: ProductdescriptionRow): ConnectionIO[ProductdescriptionRow] = { delay { @@ -65,7 +65,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, } } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderMock(ProductdescriptionFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductdescriptionFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductdescriptionRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, } } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields.structure.fields, map) } override def upsert(unsaved: ProductdescriptionRow): ConnectionIO[ProductdescriptionRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala deleted file mode 100644 index fa0869f21a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdescriptionStructure[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) - extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] - with ProductdescriptionFields[Row] { outer => - - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): ProductdescriptionStructure[NewRow] = - new ProductdescriptionStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala index 2f7d55f952..58a368403e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdocumentFields[Row] { val productid: IdField[ProductId, Row] val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object ProductdocumentFields extends ProductdocumentStructure[ProductdocumentRow](None, identity, (_, x) => x) +object ProductdocumentFields { + val structure: Relation[ProductdocumentFields, ProductdocumentRow, ProductdocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) + extends Relation[ProductdocumentFields, ProductdocumentRow, Row] { + + override val fields: ProductdocumentFields[Row] = new ProductdocumentFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala index 5d6dd9e08d..76bf14eed2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala @@ -28,7 +28,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { sql"""delete from production.productdocument where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "documentnode" = ${fromWrite(compositeId.documentnode)(Write.fromPut(DocumentId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilder("production.productdocument", ProductdocumentFields) + DeleteBuilder("production.productdocument", ProductdocumentFields.structure) } override def insert(unsaved: ProductdocumentRow): ConnectionIO[ProductdocumentRow] = { sql"""insert into production.productdocument("productid", "modifieddate", "documentnode") @@ -71,7 +71,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { new FragmentOps(sql"""COPY production.productdocument("productid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductdocumentRowUnsaved.text) } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderSql("production.productdocument", ProductdocumentFields, ProductdocumentRow.read) + SelectBuilderSql("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.read) } override def selectAll: Stream[ConnectionIO, ProductdocumentRow] = { sql"""select "productid", "modifieddate"::text, "documentnode" from production.productdocument""".query(ProductdocumentRow.read).stream @@ -89,7 +89,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilder("production.productdocument", ProductdocumentFields, ProductdocumentRow.read) + UpdateBuilder("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.read) } override def upsert(unsaved: ProductdocumentRow): ConnectionIO[ProductdocumentRow] = { sql"""insert into production.productdocument("productid", "modifieddate", "documentnode") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala index 66da70caee..bdd6107df0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala @@ -27,7 +27,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields.structure.fields, map) } override def insert(unsaved: ProductdocumentRow): ConnectionIO[ProductdocumentRow] = { delay { @@ -65,7 +65,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc } } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderMock(ProductdocumentFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductdocumentFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductdocumentRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc } } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields.structure.fields, map) } override def upsert(unsaved: ProductdocumentRow): ConnectionIO[ProductdocumentRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala deleted file mode 100644 index 552a4d3bd0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdocument - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdocumentStructure[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) - extends Relation[ProductdocumentFields, ProductdocumentRow, Row] - with ProductdocumentFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): ProductdocumentStructure[NewRow] = - new ProductdocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala index c295edd540..e3d41dae02 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductinventoryFields[Row] { val productid: IdField[ProductId, Row] @@ -24,5 +26,29 @@ trait ProductinventoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductinventoryFields extends ProductinventoryStructure[ProductinventoryRow](None, identity, (_, x) => x) +object ProductinventoryFields { + val structure: Relation[ProductinventoryFields, ProductinventoryRow, ProductinventoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) + extends Relation[ProductinventoryFields, ProductinventoryRow, Row] { + + override val fields: ProductinventoryFields[Row] = new ProductinventoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala index d05c11d625..961b5a3bdd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala @@ -31,7 +31,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { sql"""delete from production.productinventory where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "locationid" = ${fromWrite(compositeId.locationid)(Write.fromPut(LocationId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilder("production.productinventory", ProductinventoryFields) + DeleteBuilder("production.productinventory", ProductinventoryFields.structure) } override def insert(unsaved: ProductinventoryRow): ConnectionIO[ProductinventoryRow] = { sql"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") @@ -81,7 +81,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { new FragmentOps(sql"""COPY production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductinventoryRowUnsaved.text) } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderSql("production.productinventory", ProductinventoryFields, ProductinventoryRow.read) + SelectBuilderSql("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.read) } override def selectAll: Stream[ConnectionIO, ProductinventoryRow] = { sql"""select "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text from production.productinventory""".query(ProductinventoryRow.read).stream @@ -103,7 +103,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilder("production.productinventory", ProductinventoryFields, ProductinventoryRow.read) + UpdateBuilder("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.read) } override def upsert(unsaved: ProductinventoryRow): ConnectionIO[ProductinventoryRow] = { sql"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala index 53c4fe430a..a918fc6479 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala @@ -27,7 +27,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields.structure.fields, map) } override def insert(unsaved: ProductinventoryRow): ConnectionIO[ProductinventoryRow] = { delay { @@ -65,7 +65,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod } } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderMock(ProductinventoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductinventoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductinventoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod } } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields.structure.fields, map) } override def upsert(unsaved: ProductinventoryRow): ConnectionIO[ProductinventoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala deleted file mode 100644 index d900c732e0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productinventory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductinventoryStructure[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) - extends Relation[ProductinventoryFields, ProductinventoryRow, Row] - with ProductinventoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): ProductinventoryStructure[NewRow] = - new ProductinventoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala index 260089c642..3e7f682a75 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala @@ -10,8 +10,10 @@ package productlistpricehistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductlistpricehistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductlistpricehistoryFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductlistpricehistoryFields extends ProductlistpricehistoryStructure[ProductlistpricehistoryRow](None, identity, (_, x) => x) +object ProductlistpricehistoryFields { + val structure: Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, ProductlistpricehistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) + extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] { + + override val fields: ProductlistpricehistoryFields[Row] = new ProductlistpricehistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala index 5b6b3c3142..86728018f0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala @@ -28,7 +28,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { sql"""delete from production.productlistpricehistory where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "startdate" = ${fromWrite(compositeId.startdate)(Write.fromPut(TypoLocalDateTime.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields) + DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure) } override def insert(unsaved: ProductlistpricehistoryRow): ConnectionIO[ProductlistpricehistoryRow] = { sql"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") @@ -70,7 +70,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { new FragmentOps(sql"""COPY production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductlistpricehistoryRowUnsaved.text) } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.read) + SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.read) } override def selectAll: Stream[ConnectionIO, ProductlistpricehistoryRow] = { sql"""select "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text from production.productlistpricehistory""".query(ProductlistpricehistoryRow.read).stream @@ -90,7 +90,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.read) + UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.read) } override def upsert(unsaved: ProductlistpricehistoryRow): ConnectionIO[ProductlistpricehistoryRow] = { sql"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala index 56f7ce1ed2..c28a782a32 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala @@ -27,7 +27,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def insert(unsaved: ProductlistpricehistoryRow): ConnectionIO[ProductlistpricehistoryRow] = { delay { @@ -65,7 +65,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo } } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderMock(ProductlistpricehistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductlistpricehistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductlistpricehistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo } } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def upsert(unsaved: ProductlistpricehistoryRow): ConnectionIO[ProductlistpricehistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala deleted file mode 100644 index 042698e344..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productlistpricehistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductlistpricehistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) - extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] - with ProductlistpricehistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): ProductlistpricehistoryStructure[NewRow] = - new ProductlistpricehistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala index 2437f0c667..cb5a586235 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.customtypes.TypoXml import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductmodelFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -23,5 +25,28 @@ trait ProductmodelFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelFields extends ProductmodelStructure[ProductmodelRow](None, identity, (_, x) => x) +object ProductmodelFields { + val structure: Relation[ProductmodelFields, ProductmodelRow, ProductmodelRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) + extends Relation[ProductmodelFields, ProductmodelRow, Row] { + + override val fields: ProductmodelFields[Row] = new ProductmodelFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala index bf9d9c8993..81829f0c43 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala @@ -29,7 +29,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { sql"""delete from production.productmodel where "productmodelid" = ${fromWrite(productmodelid)(Write.fromPut(ProductmodelId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilder("production.productmodel", ProductmodelFields) + DeleteBuilder("production.productmodel", ProductmodelFields.structure) } override def insert(unsaved: ProductmodelRow): ConnectionIO[ProductmodelRow] = { sql"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { new FragmentOps(sql"""COPY production.productmodel("name", "catalogdescription", "instructions", "productmodelid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductmodelRowUnsaved.text) } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderSql("production.productmodel", ProductmodelFields, ProductmodelRow.read) + SelectBuilderSql("production.productmodel", ProductmodelFields.structure, ProductmodelRow.read) } override def selectAll: Stream[ConnectionIO, ProductmodelRow] = { sql"""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text from production.productmodel""".query(ProductmodelRow.read).stream @@ -103,7 +103,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilder("production.productmodel", ProductmodelFields, ProductmodelRow.read) + UpdateBuilder("production.productmodel", ProductmodelFields.structure, ProductmodelRow.read) } override def upsert(unsaved: ProductmodelRow): ConnectionIO[ProductmodelRow] = { sql"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala index b53d688b99..c46176e398 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala @@ -27,7 +27,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel delay(map.remove(productmodelid).isDefined) } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelFields.structure.fields, map) } override def insert(unsaved: ProductmodelRow): ConnectionIO[ProductmodelRow] = { delay { @@ -65,7 +65,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel } } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderMock(ProductmodelFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductmodelFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductmodelRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel } } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelFields.structure.fields, map) } override def upsert(unsaved: ProductmodelRow): ConnectionIO[ProductmodelRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala deleted file mode 100644 index a1285ade93..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodel - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductmodelStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) - extends Relation[ProductmodelFields, ProductmodelRow, Row] - with ProductmodelFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): ProductmodelStructure[NewRow] = - new ProductmodelStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala index dbdfb81ca0..0c238569fc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelillustrationFields[Row] { val productmodelid: IdField[ProductmodelId, Row] val illustrationid: IdField[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelillustrationFields extends ProductmodelillustrationStructure[ProductmodelillustrationRow](None, identity, (_, x) => x) +object ProductmodelillustrationFields { + val structure: Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, ProductmodelillustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) + extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] { + + override val fields: ProductmodelillustrationFields[Row] = new ProductmodelillustrationFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala index 9759750cab..8fdd4fc0bb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala @@ -28,7 +28,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { sql"""delete from production.productmodelillustration where "productmodelid" = ${fromWrite(compositeId.productmodelid)(Write.fromPut(ProductmodelId.put))} AND "illustrationid" = ${fromWrite(compositeId.illustrationid)(Write.fromPut(IllustrationId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields) + DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure) } override def insert(unsaved: ProductmodelillustrationRow): ConnectionIO[ProductmodelillustrationRow] = { sql"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") @@ -68,7 +68,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { new FragmentOps(sql"""COPY production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductmodelillustrationRowUnsaved.text) } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.read) + SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.read) } override def selectAll: Stream[ConnectionIO, ProductmodelillustrationRow] = { sql"""select "productmodelid", "illustrationid", "modifieddate"::text from production.productmodelillustration""".query(ProductmodelillustrationRow.read).stream @@ -86,7 +86,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.read) + UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.read) } override def upsert(unsaved: ProductmodelillustrationRow): ConnectionIO[ProductmodelillustrationRow] = { sql"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala index 0dcb667b0b..6e08a60730 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala @@ -27,7 +27,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def insert(unsaved: ProductmodelillustrationRow): ConnectionIO[ProductmodelillustrationRow] = { delay { @@ -65,7 +65,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration } } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderMock(ProductmodelillustrationFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductmodelillustrationFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductmodelillustrationRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration } } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def upsert(unsaved: ProductmodelillustrationRow): ConnectionIO[ProductmodelillustrationRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala deleted file mode 100644 index e5e930457e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelillustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelillustrationStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) - extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] - with ProductmodelillustrationFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): ProductmodelillustrationStructure[NewRow] = - new ProductmodelillustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala index bf16342ec5..52ccc50b47 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelproductdescriptioncultureFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -20,5 +22,26 @@ trait ProductmodelproductdescriptioncultureFields[Row] { val cultureid: IdField[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelproductdescriptioncultureFields extends ProductmodelproductdescriptioncultureStructure[ProductmodelproductdescriptioncultureRow](None, identity, (_, x) => x) +object ProductmodelproductdescriptioncultureFields { + val structure: Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, ProductmodelproductdescriptioncultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) + extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] { + + override val fields: ProductmodelproductdescriptioncultureFields[Row] = new ProductmodelproductdescriptioncultureFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala index ecf396de73..05310ff159 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala @@ -29,7 +29,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd sql"""delete from production.productmodelproductdescriptionculture where "productmodelid" = ${fromWrite(compositeId.productmodelid)(Write.fromPut(ProductmodelId.put))} AND "productdescriptionid" = ${fromWrite(compositeId.productdescriptionid)(Write.fromPut(ProductdescriptionId.put))} AND "cultureid" = ${fromWrite(compositeId.cultureid)(Write.fromPut(CultureId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields) + DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow): ConnectionIO[ProductmodelproductdescriptioncultureRow] = { sql"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") @@ -70,7 +70,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd new FragmentOps(sql"""COPY production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductmodelproductdescriptioncultureRowUnsaved.text) } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.read) + SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.read) } override def selectAll: Stream[ConnectionIO, ProductmodelproductdescriptioncultureRow] = { sql"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text from production.productmodelproductdescriptionculture""".query(ProductmodelproductdescriptioncultureRow.read).stream @@ -88,7 +88,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd .map(_ > 0) } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.read) + UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.read) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow): ConnectionIO[ProductmodelproductdescriptioncultureRow] = { sql"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala index ff0d5ef2f0..acc0445c5a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala @@ -27,7 +27,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow): ConnectionIO[ProductmodelproductdescriptioncultureRow] = { delay { @@ -65,7 +65,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode } } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderMock(ProductmodelproductdescriptioncultureFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductmodelproductdescriptioncultureFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductmodelproductdescriptioncultureRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode } } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow): ConnectionIO[ProductmodelproductdescriptioncultureRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala deleted file mode 100644 index 68bba1a170..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelproductdescriptionculture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelproductdescriptioncultureStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) - extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] - with ProductmodelproductdescriptioncultureFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): ProductmodelproductdescriptioncultureStructure[NewRow] = - new ProductmodelproductdescriptioncultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala index 1629445e71..291433253d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala @@ -10,8 +10,10 @@ package productphoto import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductphotoFields[Row] { val productphotoid: IdField[ProductphotoId, Row] @@ -21,5 +23,28 @@ trait ProductphotoFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductphotoFields extends ProductphotoStructure[ProductphotoRow](None, identity, (_, x) => x) +object ProductphotoFields { + val structure: Relation[ProductphotoFields, ProductphotoRow, ProductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) + extends Relation[ProductphotoFields, ProductphotoRow, Row] { + + override val fields: ProductphotoFields[Row] = new ProductphotoFields[Row] { + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala index b50e5d1416..850fb2e033 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala @@ -28,7 +28,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { sql"""delete from production.productphoto where "productphotoid" = ${fromWrite(productphotoid)(Write.fromPut(ProductphotoId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilder("production.productphoto", ProductphotoFields) + DeleteBuilder("production.productphoto", ProductphotoFields.structure) } override def insert(unsaved: ProductphotoRow): ConnectionIO[ProductphotoRow] = { sql"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") @@ -74,7 +74,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { new FragmentOps(sql"""COPY production.productphoto("thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "productphotoid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductphotoRowUnsaved.text) } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderSql("production.productphoto", ProductphotoFields, ProductphotoRow.read) + SelectBuilderSql("production.productphoto", ProductphotoFields.structure, ProductphotoRow.read) } override def selectAll: Stream[ConnectionIO, ProductphotoRow] = { sql"""select "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text from production.productphoto""".query(ProductphotoRow.read).stream @@ -99,7 +99,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilder("production.productphoto", ProductphotoFields, ProductphotoRow.read) + UpdateBuilder("production.productphoto", ProductphotoFields.structure, ProductphotoRow.read) } override def upsert(unsaved: ProductphotoRow): ConnectionIO[ProductphotoRow] = { sql"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala index 6cc497fba4..c175316344 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala @@ -27,7 +27,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto delay(map.remove(productphotoid).isDefined) } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductphotoFields.structure.fields, map) } override def insert(unsaved: ProductphotoRow): ConnectionIO[ProductphotoRow] = { delay { @@ -65,7 +65,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto } } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderMock(ProductphotoFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductphotoFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductphotoRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto } } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductphotoRow): ConnectionIO[ProductphotoRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala deleted file mode 100644 index 5d6d6be4d0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productphoto - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) - extends Relation[ProductphotoFields, ProductphotoRow, Row] - with ProductphotoFields[Row] { outer => - - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): ProductphotoStructure[NewRow] = - new ProductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala index 4890db8c2f..930619043e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductproductphotoFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,26 @@ trait ProductproductphotoFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductproductphotoFields extends ProductproductphotoStructure[ProductproductphotoRow](None, identity, (_, x) => x) +object ProductproductphotoFields { + val structure: Relation[ProductproductphotoFields, ProductproductphotoRow, ProductproductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) + extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] { + + override val fields: ProductproductphotoFields[Row] = new ProductproductphotoFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala index e552c91f63..5cc6dae442 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala @@ -29,7 +29,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { sql"""delete from production.productproductphoto where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "productphotoid" = ${fromWrite(compositeId.productphotoid)(Write.fromPut(ProductphotoId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilder("production.productproductphoto", ProductproductphotoFields) + DeleteBuilder("production.productproductphoto", ProductproductphotoFields.structure) } override def insert(unsaved: ProductproductphotoRow): ConnectionIO[ProductproductphotoRow] = { sql"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") @@ -73,7 +73,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { new FragmentOps(sql"""COPY production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductproductphotoRowUnsaved.text) } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderSql("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.read) + SelectBuilderSql("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.read) } override def selectAll: Stream[ConnectionIO, ProductproductphotoRow] = { sql"""select "productid", "productphotoid", "primary", "modifieddate"::text from production.productproductphoto""".query(ProductproductphotoRow.read).stream @@ -92,7 +92,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilder("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.read) + UpdateBuilder("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.read) } override def upsert(unsaved: ProductproductphotoRow): ConnectionIO[ProductproductphotoRow] = { sql"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala index c292cf272d..fa5486a3d8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala @@ -27,7 +27,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields.structure.fields, map) } override def insert(unsaved: ProductproductphotoRow): ConnectionIO[ProductproductphotoRow] = { delay { @@ -65,7 +65,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved } } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderMock(ProductproductphotoFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductproductphotoFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductproductphotoRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved } } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductproductphotoRow): ConnectionIO[ProductproductphotoRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala deleted file mode 100644 index 2ddbdadac0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productproductphoto - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductproductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) - extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] - with ProductproductphotoFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): ProductproductphotoStructure[NewRow] = - new ProductproductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala index 7c631f3779..4adead7192 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductreviewFields[Row] { val productreviewid: IdField[ProductreviewId, Row] @@ -24,5 +26,30 @@ trait ProductreviewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductreviewFields extends ProductreviewStructure[ProductreviewRow](None, identity, (_, x) => x) +object ProductreviewFields { + val structure: Relation[ProductreviewFields, ProductreviewRow, ProductreviewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) + extends Relation[ProductreviewFields, ProductreviewRow, Row] { + + override val fields: ProductreviewFields[Row] = new ProductreviewFields[Row] { + override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala index 4b07a93147..307ff4b519 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala @@ -29,7 +29,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { sql"""delete from production.productreview where "productreviewid" = ${fromWrite(productreviewid)(Write.fromPut(ProductreviewId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilder("production.productreview", ProductreviewFields) + DeleteBuilder("production.productreview", ProductreviewFields.structure) } override def insert(unsaved: ProductreviewRow): ConnectionIO[ProductreviewRow] = { sql"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") @@ -80,7 +80,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { new FragmentOps(sql"""COPY production.productreview("productid", "reviewername", "emailaddress", "rating", "comments", "productreviewid", "reviewdate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductreviewRowUnsaved.text) } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderSql("production.productreview", ProductreviewFields, ProductreviewRow.read) + SelectBuilderSql("production.productreview", ProductreviewFields.structure, ProductreviewRow.read) } override def selectAll: Stream[ConnectionIO, ProductreviewRow] = { sql"""select "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text from production.productreview""".query(ProductreviewRow.read).stream @@ -107,7 +107,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilder("production.productreview", ProductreviewFields, ProductreviewRow.read) + UpdateBuilder("production.productreview", ProductreviewFields.structure, ProductreviewRow.read) } override def upsert(unsaved: ProductreviewRow): ConnectionIO[ProductreviewRow] = { sql"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala index 8e98205064..ae74482e6f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala @@ -27,7 +27,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev delay(map.remove(productreviewid).isDefined) } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductreviewFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductreviewFields.structure.fields, map) } override def insert(unsaved: ProductreviewRow): ConnectionIO[ProductreviewRow] = { delay { @@ -65,7 +65,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev } } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderMock(ProductreviewFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductreviewFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductreviewRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev } } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductreviewFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductreviewFields.structure.fields, map) } override def upsert(unsaved: ProductreviewRow): ConnectionIO[ProductreviewRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala deleted file mode 100644 index e7eca2f48d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productreview - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductreviewStructure[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) - extends Relation[ProductreviewFields, ProductreviewRow, Row] - with ProductreviewFields[Row] { outer => - - override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): ProductreviewStructure[NewRow] = - new ProductreviewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala index 7aaa9eaa8c..023f125696 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductsubcategoryFields[Row] { val productsubcategoryid: IdField[ProductsubcategoryId, Row] @@ -21,5 +23,27 @@ trait ProductsubcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductsubcategoryFields extends ProductsubcategoryStructure[ProductsubcategoryRow](None, identity, (_, x) => x) +object ProductsubcategoryFields { + val structure: Relation[ProductsubcategoryFields, ProductsubcategoryRow, ProductsubcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) + extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] { + + override val fields: ProductsubcategoryFields[Row] = new ProductsubcategoryFields[Row] { + override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala index 4a44e28083..27ddbbdef9 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { sql"""delete from production.productsubcategory where "productsubcategoryid" = ${fromWrite(productsubcategoryid)(Write.fromPut(ProductsubcategoryId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilder("production.productsubcategory", ProductsubcategoryFields) + DeleteBuilder("production.productsubcategory", ProductsubcategoryFields.structure) } override def insert(unsaved: ProductsubcategoryRow): ConnectionIO[ProductsubcategoryRow] = { sql"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") @@ -77,7 +77,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { new FragmentOps(sql"""COPY production.productsubcategory("productcategoryid", "name", "productsubcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductsubcategoryRowUnsaved.text) } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.read) + SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.read) } override def selectAll: Stream[ConnectionIO, ProductsubcategoryRow] = { sql"""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text from production.productsubcategory""".query(ProductsubcategoryRow.read).stream @@ -101,7 +101,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilder("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.read) + UpdateBuilder("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.read) } override def upsert(unsaved: ProductsubcategoryRow): ConnectionIO[ProductsubcategoryRow] = { sql"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala index 1a1b2d90f7..5b163f72b4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala @@ -27,7 +27,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, delay(map.remove(productsubcategoryid).isDefined) } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields.structure.fields, map) } override def insert(unsaved: ProductsubcategoryRow): ConnectionIO[ProductsubcategoryRow] = { delay { @@ -65,7 +65,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, } } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderMock(ProductsubcategoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductsubcategoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductsubcategoryRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, } } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductsubcategoryRow): ConnectionIO[ProductsubcategoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala deleted file mode 100644 index 252d890975..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productsubcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductsubcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) - extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] - with ProductsubcategoryFields[Row] { outer => - - override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): ProductsubcategoryStructure[NewRow] = - new ProductsubcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala index ca072f007e..54c8b879a7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala @@ -10,12 +10,34 @@ package scrapreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ScrapreasonFields[Row] { val scrapreasonid: IdField[ScrapreasonId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ScrapreasonFields extends ScrapreasonStructure[ScrapreasonRow](None, identity, (_, x) => x) +object ScrapreasonFields { + val structure: Relation[ScrapreasonFields, ScrapreasonRow, ScrapreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) + extends Relation[ScrapreasonFields, ScrapreasonRow, Row] { + + override val fields: ScrapreasonFields[Row] = new ScrapreasonFields[Row] { + override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala index 9a0718f4b7..74b1fd75bc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala @@ -27,7 +27,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { sql"""delete from production.scrapreason where "scrapreasonid" = ${fromWrite(scrapreasonid)(Write.fromPut(ScrapreasonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilder("production.scrapreason", ScrapreasonFields) + DeleteBuilder("production.scrapreason", ScrapreasonFields.structure) } override def insert(unsaved: ScrapreasonRow): ConnectionIO[ScrapreasonRow] = { sql"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") @@ -70,7 +70,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { new FragmentOps(sql"""COPY production.scrapreason("name", "scrapreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ScrapreasonRowUnsaved.text) } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderSql("production.scrapreason", ScrapreasonFields, ScrapreasonRow.read) + SelectBuilderSql("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.read) } override def selectAll: Stream[ConnectionIO, ScrapreasonRow] = { sql"""select "scrapreasonid", "name", "modifieddate"::text from production.scrapreason""".query(ScrapreasonRow.read).stream @@ -92,7 +92,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { .map(_ > 0) } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilder("production.scrapreason", ScrapreasonFields, ScrapreasonRow.read) + UpdateBuilder("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.read) } override def upsert(unsaved: ScrapreasonRow): ConnectionIO[ScrapreasonRow] = { sql"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala index 1bf42b0b53..f0a69dacff 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala @@ -27,7 +27,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow delay(map.remove(scrapreasonid).isDefined) } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields.structure.fields, map) } override def insert(unsaved: ScrapreasonRow): ConnectionIO[ScrapreasonRow] = { delay { @@ -65,7 +65,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow } } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderMock(ScrapreasonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ScrapreasonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ScrapreasonRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow } } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields.structure.fields, map) } override def upsert(unsaved: ScrapreasonRow): ConnectionIO[ScrapreasonRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala deleted file mode 100644 index 9d25018824..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package scrapreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ScrapreasonStructure[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) - extends Relation[ScrapreasonFields, ScrapreasonRow, Row] - with ScrapreasonFields[Row] { outer => - - override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): ScrapreasonStructure[NewRow] = - new ScrapreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala index 9df57dd54b..51414ff76f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala @@ -10,7 +10,9 @@ package transactionhistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryFields[Row] { val transactionid: IdField[TransactionhistoryId, Row] @@ -23,5 +25,31 @@ trait TransactionhistoryFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryFields extends TransactionhistoryStructure[TransactionhistoryRow](None, identity, (_, x) => x) +object TransactionhistoryFields { + val structure: Relation[TransactionhistoryFields, TransactionhistoryRow, TransactionhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) + extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] { + + override val fields: TransactionhistoryFields[Row] = new TransactionhistoryFields[Row] { + override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala index 9c83c5451f..0aa46b5ebd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala @@ -28,7 +28,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { sql"""delete from production.transactionhistory where "transactionid" = ${fromWrite(transactionid)(Write.fromPut(TransactionhistoryId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilder("production.transactionhistory", TransactionhistoryFields) + DeleteBuilder("production.transactionhistory", TransactionhistoryFields.structure) } override def insert(unsaved: TransactionhistoryRow): ConnectionIO[TransactionhistoryRow] = { sql"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -83,7 +83,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { new FragmentOps(sql"""COPY production.transactionhistory("productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "transactionid", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(TransactionhistoryRowUnsaved.text) } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderSql("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.read) + SelectBuilderSql("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.read) } override def selectAll: Stream[ConnectionIO, TransactionhistoryRow] = { sql"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from production.transactionhistory""".query(TransactionhistoryRow.read).stream @@ -111,7 +111,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilder("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.read) + UpdateBuilder("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.read) } override def upsert(unsaved: TransactionhistoryRow): ConnectionIO[TransactionhistoryRow] = { sql"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala index 5ea0e029fe..5ae26e3df0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala @@ -27,7 +27,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, delay(map.remove(transactionid).isDefined) } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryRow): ConnectionIO[TransactionhistoryRow] = { delay { @@ -65,7 +65,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, } } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderMock(TransactionhistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(TransactionhistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, TransactionhistoryRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, } } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryRow): ConnectionIO[TransactionhistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala deleted file mode 100644 index f404fa5efa..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) - extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] - with TransactionhistoryFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): TransactionhistoryStructure[NewRow] = - new TransactionhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala index 3719c19452..9c35434e94 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala @@ -9,7 +9,9 @@ package transactionhistoryarchive import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryarchiveFields[Row] { val transactionid: IdField[TransactionhistoryarchiveId, Row] @@ -22,5 +24,31 @@ trait TransactionhistoryarchiveFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryarchiveFields extends TransactionhistoryarchiveStructure[TransactionhistoryarchiveRow](None, identity, (_, x) => x) +object TransactionhistoryarchiveFields { + val structure: Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, TransactionhistoryarchiveRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) + extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] { + + override val fields: TransactionhistoryarchiveFields[Row] = new TransactionhistoryarchiveFields[Row] { + override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala index f18aec213e..adc09ac599 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala @@ -27,7 +27,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { sql"""delete from production.transactionhistoryarchive where "transactionid" = ${fromWrite(transactionid)(Write.fromPut(TransactionhistoryarchiveId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields) + DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure) } override def insert(unsaved: TransactionhistoryarchiveRow): ConnectionIO[TransactionhistoryarchiveRow] = { sql"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -79,7 +79,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { new FragmentOps(sql"""COPY production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(TransactionhistoryarchiveRowUnsaved.text) } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.read) + SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.read) } override def selectAll: Stream[ConnectionIO, TransactionhistoryarchiveRow] = { sql"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from production.transactionhistoryarchive""".query(TransactionhistoryarchiveRow.read).stream @@ -107,7 +107,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { .map(_ > 0) } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.read) + UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.read) } override def upsert(unsaved: TransactionhistoryarchiveRow): ConnectionIO[TransactionhistoryarchiveRow] = { sql"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala index ab31d2b862..80ac6a0c12 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala @@ -27,7 +27,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi delay(map.remove(transactionid).isDefined) } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryarchiveRow): ConnectionIO[TransactionhistoryarchiveRow] = { delay { @@ -65,7 +65,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi } } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderMock(TransactionhistoryarchiveFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(TransactionhistoryarchiveFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, TransactionhistoryarchiveRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi } } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryarchiveRow): ConnectionIO[TransactionhistoryarchiveRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala deleted file mode 100644 index 48ea814139..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistoryarchive - -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryarchiveStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) - extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] - with TransactionhistoryarchiveFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): TransactionhistoryarchiveStructure[NewRow] = - new TransactionhistoryarchiveStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala index 9f02820d0d..0f7801c2df 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala @@ -10,12 +10,34 @@ package unitmeasure import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait UnitmeasureFields[Row] { val unitmeasurecode: IdField[UnitmeasureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UnitmeasureFields extends UnitmeasureStructure[UnitmeasureRow](None, identity, (_, x) => x) +object UnitmeasureFields { + val structure: Relation[UnitmeasureFields, UnitmeasureRow, UnitmeasureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) + extends Relation[UnitmeasureFields, UnitmeasureRow, Row] { + + override val fields: UnitmeasureFields[Row] = new UnitmeasureFields[Row] { + override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala index 411ba0c3ba..9b3552e69e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala @@ -27,7 +27,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { sql"""delete from production.unitmeasure where "unitmeasurecode" = ${fromWrite(unitmeasurecode)(Write.fromPut(UnitmeasureId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilder("production.unitmeasure", UnitmeasureFields) + DeleteBuilder("production.unitmeasure", UnitmeasureFields.structure) } override def insert(unsaved: UnitmeasureRow): ConnectionIO[UnitmeasureRow] = { sql"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") @@ -67,7 +67,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { new FragmentOps(sql"""COPY production.unitmeasure("unitmeasurecode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(UnitmeasureRowUnsaved.text) } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderSql("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.read) + SelectBuilderSql("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.read) } override def selectAll: Stream[ConnectionIO, UnitmeasureRow] = { sql"""select "unitmeasurecode", "name", "modifieddate"::text from production.unitmeasure""".query(UnitmeasureRow.read).stream @@ -89,7 +89,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { .map(_ > 0) } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilder("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.read) + UpdateBuilder("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.read) } override def upsert(unsaved: UnitmeasureRow): ConnectionIO[UnitmeasureRow] = { sql"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala index 47a7dced44..40263834a3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala @@ -27,7 +27,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow delay(map.remove(unitmeasurecode).isDefined) } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields, map) + DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields.structure.fields, map) } override def insert(unsaved: UnitmeasureRow): ConnectionIO[UnitmeasureRow] = { delay { @@ -65,7 +65,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow } } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderMock(UnitmeasureFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(UnitmeasureFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, UnitmeasureRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow } } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields, map) + UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields.structure.fields, map) } override def upsert(unsaved: UnitmeasureRow): ConnectionIO[UnitmeasureRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala deleted file mode 100644 index d6a4a84601..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package unitmeasure - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class UnitmeasureStructure[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) - extends Relation[UnitmeasureFields, UnitmeasureRow, Row] - with UnitmeasureFields[Row] { outer => - - override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): UnitmeasureStructure[NewRow] = - new UnitmeasureStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala index 91f56cdea4..d0afa4fdd6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala @@ -11,6 +11,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VproductanddescriptionMVFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,27 @@ trait VproductanddescriptionMVFields[Row] { val cultureid: Field[CultureId, Row] val description: Field[/* max 400 chars */ String, Row] } -object VproductanddescriptionMVFields extends VproductanddescriptionMVStructure[VproductanddescriptionMVRow](None, identity, (_, x) => x) +object VproductanddescriptionMVFields { + val structure: Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, VproductanddescriptionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) + extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] { + + override val fields: VproductanddescriptionMVFields[Row] = new VproductanddescriptionMVFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productmodel, fields.cultureid, fields.description) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala index 6f0cd11f24..f6e18dadfe 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VproductanddescriptionMVRepoImpl extends VproductanddescriptionMVRepo { override def select: SelectBuilder[VproductanddescriptionMVFields, VproductanddescriptionMVRow] = { - SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields, VproductanddescriptionMVRow.read) + SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields.structure, VproductanddescriptionMVRow.read) } override def selectAll: Stream[ConnectionIO, VproductanddescriptionMVRow] = { sql"""select "productid", "name", "productmodel", "cultureid", "description" from production.vproductanddescription""".query(VproductanddescriptionMVRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala deleted file mode 100644 index e73b8f47cc..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductanddescription - -import adventureworks.production.culture.CultureId -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VproductanddescriptionMVStructure[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) - extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] - with VproductanddescriptionMVFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productmodel, cultureid, description) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): VproductanddescriptionMVStructure[NewRow] = - new VproductanddescriptionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala index a1ee8c8769..4b6529c054 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelcatalogdescriptionViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -41,5 +43,47 @@ trait VproductmodelcatalogdescriptionViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelcatalogdescriptionViewFields extends VproductmodelcatalogdescriptionViewStructure[VproductmodelcatalogdescriptionViewRow](None, identity, (_, x) => x) +object VproductmodelcatalogdescriptionViewFields { + val structure: Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, VproductmodelcatalogdescriptionViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) + extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] { + + override val fields: VproductmodelcatalogdescriptionViewFields[Row] = new VproductmodelcatalogdescriptionViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) + override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) + override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) + override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) + override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) + override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) + override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) + override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) + override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) + override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) + override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) + override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) + override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) + override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) + override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) + override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) + override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.Summary, fields.manufacturer, fields.copyright, fields.producturl, fields.warrantyperiod, fields.warrantydescription, fields.noofyears, fields.maintenancedescription, fields.wheel, fields.saddle, fields.pedal, fields.bikeframe, fields.crankset, fields.pictureangle, fields.picturesize, fields.productphotoid, fields.material, fields.color, fields.productline, fields.style, fields.riderexperience, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala index f2f5601833..4a7c45d782 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VproductmodelcatalogdescriptionViewRepoImpl extends VproductmodelcatalogdescriptionViewRepo { override def select: SelectBuilder[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow] = { - SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow.read) + SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields.structure, VproductmodelcatalogdescriptionViewRow.read) } override def selectAll: Stream[ConnectionIO, VproductmodelcatalogdescriptionViewRow] = { sql"""select "productmodelid", "name", "Summary", "manufacturer", "copyright", "producturl", "warrantyperiod", "warrantydescription", "noofyears", "maintenancedescription", "wheel", "saddle", "pedal", "bikeframe", "crankset", "pictureangle", "picturesize", "productphotoid", "material", "color", "productline", "style", "riderexperience", "rowguid", "modifieddate"::text from production.vproductmodelcatalogdescription""".query(VproductmodelcatalogdescriptionViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala deleted file mode 100644 index 71298da4a1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala +++ /dev/null @@ -1,54 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelcatalogdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelcatalogdescriptionViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) - extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] - with VproductmodelcatalogdescriptionViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) - override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) - override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) - override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) - override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) - override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) - override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) - override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) - override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) - override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) - override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) - override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) - override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) - override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) - override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) - override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) - override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, Summary, manufacturer, copyright, producturl, warrantyperiod, warrantydescription, noofyears, maintenancedescription, wheel, saddle, pedal, bikeframe, crankset, pictureangle, picturesize, productphotoid, material, color, productline, style, riderexperience, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): VproductmodelcatalogdescriptionViewStructure[NewRow] = - new VproductmodelcatalogdescriptionViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala index 5355b83c42..0561081996 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelinstructionsViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -27,5 +29,33 @@ trait VproductmodelinstructionsViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelinstructionsViewFields extends VproductmodelinstructionsViewStructure[VproductmodelinstructionsViewRow](None, identity, (_, x) => x) +object VproductmodelinstructionsViewFields { + val structure: Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, VproductmodelinstructionsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) + extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] { + + override val fields: VproductmodelinstructionsViewFields[Row] = new VproductmodelinstructionsViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) + override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) + override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) + override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) + override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) + override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.instructions, fields.LocationID, fields.SetupHours, fields.MachineHours, fields.LaborHours, fields.LotSize, fields.Step, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala index b9634356da..d52875d341 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VproductmodelinstructionsViewRepoImpl extends VproductmodelinstructionsViewRepo { override def select: SelectBuilder[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow] = { - SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow.read) + SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields.structure, VproductmodelinstructionsViewRow.read) } override def selectAll: Stream[ConnectionIO, VproductmodelinstructionsViewRow] = { sql"""select "productmodelid", "name", "instructions", "LocationID", "SetupHours", "MachineHours", "LaborHours", "LotSize", "Step", "rowguid", "modifieddate"::text from production.vproductmodelinstructions""".query(VproductmodelinstructionsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala deleted file mode 100644 index 8a44e88098..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelinstructions - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelinstructionsViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) - extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] - with VproductmodelinstructionsViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) - override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) - override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) - override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) - override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) - override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, instructions, LocationID, SetupHours, MachineHours, LaborHours, LotSize, Step, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): VproductmodelinstructionsViewStructure[NewRow] = - new VproductmodelinstructionsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala index add847ee57..d97de3b55d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -26,5 +28,31 @@ trait WorkorderFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderFields extends WorkorderStructure[WorkorderRow](None, identity, (_, x) => x) +object WorkorderFields { + val structure: Relation[WorkorderFields, WorkorderRow, WorkorderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) + extends Relation[WorkorderFields, WorkorderRow, Row] { + + override val fields: WorkorderFields[Row] = new WorkorderFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala index 53dc812161..9b94229d37 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala @@ -30,7 +30,7 @@ class WorkorderRepoImpl extends WorkorderRepo { sql"""delete from production.workorder where "workorderid" = ${fromWrite(workorderid)(Write.fromPut(WorkorderId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilder("production.workorder", WorkorderFields) + DeleteBuilder("production.workorder", WorkorderFields.structure) } override def insert(unsaved: WorkorderRow): ConnectionIO[WorkorderRow] = { sql"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") @@ -79,7 +79,7 @@ class WorkorderRepoImpl extends WorkorderRepo { new FragmentOps(sql"""COPY production.workorder("productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "workorderid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(WorkorderRowUnsaved.text) } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderSql("production.workorder", WorkorderFields, WorkorderRow.read) + SelectBuilderSql("production.workorder", WorkorderFields.structure, WorkorderRow.read) } override def selectAll: Stream[ConnectionIO, WorkorderRow] = { sql"""select "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text from production.workorder""".query(WorkorderRow.read).stream @@ -107,7 +107,7 @@ class WorkorderRepoImpl extends WorkorderRepo { .map(_ > 0) } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilder("production.workorder", WorkorderFields, WorkorderRow.read) + UpdateBuilder("production.workorder", WorkorderFields.structure, WorkorderRow.read) } override def upsert(unsaved: WorkorderRow): ConnectionIO[WorkorderRow] = { sql"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala index ecc80a95ed..d66f1ff4bf 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala @@ -27,7 +27,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], delay(map.remove(workorderid).isDefined) } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderFields.structure.fields, map) } override def insert(unsaved: WorkorderRow): ConnectionIO[WorkorderRow] = { delay { @@ -65,7 +65,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], } } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderMock(WorkorderFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(WorkorderFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, WorkorderRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], } } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderFields.structure.fields, map) } override def upsert(unsaved: WorkorderRow): ConnectionIO[WorkorderRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala deleted file mode 100644 index 0ec9c52e4c..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorder - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderStructure[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) - extends Relation[WorkorderFields, WorkorderRow, Row] - with WorkorderFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): WorkorderStructure[NewRow] = - new WorkorderStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala index 65f604d366..2f946e6814 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderroutingFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -29,5 +31,34 @@ trait WorkorderroutingFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderroutingFields extends WorkorderroutingStructure[WorkorderroutingRow](None, identity, (_, x) => x) +object WorkorderroutingFields { + val structure: Relation[WorkorderroutingFields, WorkorderroutingRow, WorkorderroutingRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) + extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] { + + override val fields: WorkorderroutingFields[Row] = new WorkorderroutingFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala index f0e634fbda..040aa7cc4d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala @@ -30,7 +30,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { sql"""delete from production.workorderrouting where "workorderid" = ${fromWrite(compositeId.workorderid)(Write.fromPut(WorkorderId.put))} AND "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(Meta.IntMeta.put))} AND "operationsequence" = ${fromWrite(compositeId.operationsequence)(Write.fromPut(TypoShort.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilder("production.workorderrouting", WorkorderroutingFields) + DeleteBuilder("production.workorderrouting", WorkorderroutingFields.structure) } override def insert(unsaved: WorkorderroutingRow): ConnectionIO[WorkorderroutingRow] = { sql"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") @@ -79,7 +79,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { new FragmentOps(sql"""COPY production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(WorkorderroutingRowUnsaved.text) } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderSql("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.read) + SelectBuilderSql("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.read) } override def selectAll: Stream[ConnectionIO, WorkorderroutingRow] = { sql"""select "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text from production.workorderrouting""".query(WorkorderroutingRow.read).stream @@ -105,7 +105,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { .map(_ > 0) } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilder("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.read) + UpdateBuilder("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.read) } override def upsert(unsaved: WorkorderroutingRow): ConnectionIO[WorkorderroutingRow] = { sql"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala index 4e49637988..c91f59c097 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala @@ -27,7 +27,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields.structure.fields, map) } override def insert(unsaved: WorkorderroutingRow): ConnectionIO[WorkorderroutingRow] = { delay { @@ -65,7 +65,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work } } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderMock(WorkorderroutingFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(WorkorderroutingFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, WorkorderroutingRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work } } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields.structure.fields, map) } override def upsert(unsaved: WorkorderroutingRow): ConnectionIO[WorkorderroutingRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala deleted file mode 100644 index 7329ce8cd9..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorderrouting - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderroutingStructure[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) - extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] - with WorkorderroutingFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): WorkorderroutingStructure[NewRow] = - new WorkorderroutingStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala index 5ab9028beb..156b398b0a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PodViewFields[Row] { val id: Field[Int, Row] @@ -25,5 +27,32 @@ trait PodViewFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PodViewFields extends PodViewStructure[PodViewRow](None, identity, (_, x) => x) +object PodViewFields { + val structure: Relation[PodViewFields, PodViewRow, PodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) + extends Relation[PodViewFields, PodViewRow, Row] { + + override val fields: PodViewFields[Row] = new PodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala index 63ca270660..a693e11bed 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PodViewRepoImpl extends PodViewRepo { override def select: SelectBuilder[PodViewFields, PodViewRow] = { - SelectBuilderSql("pu.pod", PodViewFields, PodViewRow.read) + SelectBuilderSql("pu.pod", PodViewFields.structure, PodViewRow.read) } override def selectAll: Stream[ConnectionIO, PodViewRow] = { sql"""select "id", "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text from pu.pod""".query(PodViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala deleted file mode 100644 index 15d841aa3a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PodViewStructure[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) - extends Relation[PodViewFields, PodViewRow, Row] - with PodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): PodViewStructure[NewRow] = - new PodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala index a2734562de..818241dfa7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PohViewFields[Row] { val id: Field[PurchaseorderheaderId, Row] @@ -30,5 +32,35 @@ trait PohViewFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PohViewFields extends PohViewStructure[PohViewRow](None, identity, (_, x) => x) +object PohViewFields { + val structure: Relation[PohViewFields, PohViewRow, PohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) + extends Relation[PohViewFields, PohViewRow, Row] { + + override val fields: PohViewFields[Row] = new PohViewFields[Row] { + override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala index 6cfda5fb6a..fe71d374d3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PohViewRepoImpl extends PohViewRepo { override def select: SelectBuilder[PohViewFields, PohViewRow] = { - SelectBuilderSql("pu.poh", PohViewFields, PohViewRow.read) + SelectBuilderSql("pu.poh", PohViewFields.structure, PohViewRow.read) } override def selectAll: Stream[ConnectionIO, PohViewRow] = { sql"""select "id", "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text from pu.poh""".query(PohViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala deleted file mode 100644 index 8051ee9753..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package poh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PohViewStructure[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) - extends Relation[PohViewFields, PohViewRow, Row] - with PohViewFields[Row] { outer => - - override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): PohViewStructure[NewRow] = - new PohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala index a84f485b9b..6c4e236e74 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PvViewFields[Row] { val id: Field[ProductId, Row] @@ -28,5 +30,34 @@ trait PvViewFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PvViewFields extends PvViewStructure[PvViewRow](None, identity, (_, x) => x) +object PvViewFields { + val structure: Relation[PvViewFields, PvViewRow, PvViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) + extends Relation[PvViewFields, PvViewRow, Row] { + + override val fields: PvViewFields[Row] = new PvViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala index bf65cbf3bd..51fc8e804c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PvViewRepoImpl extends PvViewRepo { override def select: SelectBuilder[PvViewFields, PvViewRow] = { - SelectBuilderSql("pu.pv", PvViewFields, PvViewRow.read) + SelectBuilderSql("pu.pv", PvViewFields.structure, PvViewRow.read) } override def selectAll: Stream[ConnectionIO, PvViewRow] = { sql"""select "id", "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text from pu.pv""".query(PvViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala deleted file mode 100644 index 5fbdabf88c..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pv - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PvViewStructure[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) - extends Relation[PvViewFields, PvViewRow, Row] - with PvViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): PvViewStructure[NewRow] = - new PvViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala index 50bdb92690..49a93d912c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SmViewFields[Row] { val id: Field[ShipmethodId, Row] @@ -22,5 +24,29 @@ trait SmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SmViewFields extends SmViewStructure[SmViewRow](None, identity, (_, x) => x) +object SmViewFields { + val structure: Relation[SmViewFields, SmViewRow, SmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) + extends Relation[SmViewFields, SmViewRow, Row] { + + override val fields: SmViewFields[Row] = new SmViewFields[Row] { + override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala index 8050f5aa88..34675da3cb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SmViewRepoImpl extends SmViewRepo { override def select: SelectBuilder[SmViewFields, SmViewRow] = { - SelectBuilderSql("pu.sm", SmViewFields, SmViewRow.read) + SelectBuilderSql("pu.sm", SmViewFields.structure, SmViewRow.read) } override def selectAll: Stream[ConnectionIO, SmViewRow] = { sql"""select "id", "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text from pu.sm""".query(SmViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala deleted file mode 100644 index 0af2eb84b3..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package sm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SmViewStructure[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) - extends Relation[SmViewFields, SmViewRow, Row] - with SmViewFields[Row] { outer => - - override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): SmViewStructure[NewRow] = - new SmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala index f871aa41b8..e3aea50fff 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -27,5 +29,31 @@ trait VViewFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VViewFields extends VViewStructure[VViewRow](None, identity, (_, x) => x) +object VViewFields { + val structure: Relation[VViewFields, VViewRow, VViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) + extends Relation[VViewFields, VViewRow, Row] { + + override val fields: VViewFields[Row] = new VViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala index 9335e0d472..e579e4bb84 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VViewRepoImpl extends VViewRepo { override def select: SelectBuilder[VViewFields, VViewRow] = { - SelectBuilderSql("pu.v", VViewFields, VViewRow.read) + SelectBuilderSql("pu.v", VViewFields.structure, VViewRow.read) } override def selectAll: Stream[ConnectionIO, VViewRow] = { sql"""select "id", "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text from pu.v""".query(VViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala deleted file mode 100644 index 5177f6ecf7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package v - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VViewStructure[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) - extends Relation[VViewFields, VViewRow, Row] - with VViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): VViewStructure[NewRow] = - new VViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala index 643c78dd65..1482e2a9c3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala @@ -8,12 +8,34 @@ package public package identity_test import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait IdentityTestFields[Row] { val alwaysGenerated: Field[Int, Row] val defaultGenerated: Field[Int, Row] val name: IdField[IdentityTestId, Row] } -object IdentityTestFields extends IdentityTestStructure[IdentityTestRow](None, identity, (_, x) => x) +object IdentityTestFields { + val structure: Relation[IdentityTestFields, IdentityTestRow, IdentityTestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) + extends Relation[IdentityTestFields, IdentityTestRow, Row] { + + override val fields: IdentityTestFields[Row] = new IdentityTestFields[Row] { + override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) + override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) + override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.alwaysGenerated, fields.defaultGenerated, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala index e6ab1031d7..4d8bc069fc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala @@ -26,7 +26,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { sql"""delete from public.identity-test where "name" = ${fromWrite(name)(Write.fromPut(IdentityTestId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilder("public.identity-test", IdentityTestFields) + DeleteBuilder("public.identity-test", IdentityTestFields.structure) } override def insert(unsaved: IdentityTestRow): ConnectionIO[IdentityTestRow] = { sql"""insert into public.identity-test("always_generated", "default_generated", "name") @@ -65,7 +65,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { new FragmentOps(sql"""COPY public.identity-test("name", "default_generated") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(IdentityTestRowUnsaved.text) } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderSql("public.identity-test", IdentityTestFields, IdentityTestRow.read) + SelectBuilderSql("public.identity-test", IdentityTestFields.structure, IdentityTestRow.read) } override def selectAll: Stream[ConnectionIO, IdentityTestRow] = { sql"""select "always_generated", "default_generated", "name" from public.identity-test""".query(IdentityTestRow.read).stream @@ -87,7 +87,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { .map(_ > 0) } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilder("public.identity-test", IdentityTestFields, IdentityTestRow.read) + UpdateBuilder("public.identity-test", IdentityTestFields.structure, IdentityTestRow.read) } override def upsert(unsaved: IdentityTestRow): ConnectionIO[IdentityTestRow] = { sql"""insert into public.identity-test("always_generated", "default_generated", "name") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala index b75e3fb8dc..715d661ab1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala @@ -27,7 +27,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest delay(map.remove(name).isDefined) } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilderMock(DeleteParams.empty, IdentityTestFields, map) + DeleteBuilderMock(DeleteParams.empty, IdentityTestFields.structure.fields, map) } override def insert(unsaved: IdentityTestRow): ConnectionIO[IdentityTestRow] = { delay { @@ -65,7 +65,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest } } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderMock(IdentityTestFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(IdentityTestFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, IdentityTestRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest } } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilderMock(UpdateParams.empty, IdentityTestFields, map) + UpdateBuilderMock(UpdateParams.empty, IdentityTestFields.structure.fields, map) } override def upsert(unsaved: IdentityTestRow): ConnectionIO[IdentityTestRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala deleted file mode 100644 index 60539f99aa..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package identity_test - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class IdentityTestStructure[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) - extends Relation[IdentityTestFields, IdentityTestRow, Row] - with IdentityTestFields[Row] { outer => - - override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) - override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) - override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](alwaysGenerated, defaultGenerated, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): IdentityTestStructure[NewRow] = - new IdentityTestStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala index 16e50c3232..cf013b86df 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala @@ -34,6 +34,8 @@ import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PgtestFields[Row] { val bool: Field[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestFields[Row] { val varchares: Field[Array[String], Row] val xmles: Field[Array[TypoXml], Row] } -object PgtestFields extends PgtestStructure[PgtestRow](None, identity, (_, x) => x) +object PgtestFields { + val structure: Relation[PgtestFields, PgtestRow, PgtestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) + extends Relation[PgtestFields, PgtestRow, Row] { + + override val fields: PgtestFields[Row] = new PgtestFields[Row] { + override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala index 8be02a0b2c..eb0f4b03cc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala @@ -47,7 +47,7 @@ import typo.dsl.UpdateBuilder class PgtestRepoImpl extends PgtestRepo { override def delete: DeleteBuilder[PgtestFields, PgtestRow] = { - DeleteBuilder("public.pgtest", PgtestFields) + DeleteBuilder("public.pgtest", PgtestFields.structure) } override def insert(unsaved: PgtestRow): ConnectionIO[PgtestRow] = { sql"""insert into public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -59,12 +59,12 @@ class PgtestRepoImpl extends PgtestRepo { new FragmentOps(sql"""COPY public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""").copyIn(unsaved, batchSize)(PgtestRow.text) } override def select: SelectBuilder[PgtestFields, PgtestRow] = { - SelectBuilderSql("public.pgtest", PgtestFields, PgtestRow.read) + SelectBuilderSql("public.pgtest", PgtestFields.structure, PgtestRow.read) } override def selectAll: Stream[ConnectionIO, PgtestRow] = { sql"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" from public.pgtest""".query(PgtestRow.read).stream } override def update: UpdateBuilder[PgtestFields, PgtestRow] = { - UpdateBuilder("public.pgtest", PgtestFields, PgtestRow.read) + UpdateBuilder("public.pgtest", PgtestFields.structure, PgtestRow.read) } } diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala deleted file mode 100644 index fc9276d7c9..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtest - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PgtestStructure[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) - extends Relation[PgtestFields, PgtestRow, Row] - with PgtestFields[Row] { outer => - - override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): PgtestStructure[NewRow] = - new PgtestStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala index 74ebafbc89..6549622d3f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala @@ -33,7 +33,9 @@ import adventureworks.customtypes.TypoVector import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PgtestnullFields[Row] { val bool: OptField[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestnullFields[Row] { val varchares: OptField[Array[String], Row] val xmles: OptField[Array[TypoXml], Row] } -object PgtestnullFields extends PgtestnullStructure[PgtestnullRow](None, identity, (_, x) => x) +object PgtestnullFields { + val structure: Relation[PgtestnullFields, PgtestnullRow, PgtestnullRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) + extends Relation[PgtestnullFields, PgtestnullRow, Row] { + + override val fields: PgtestnullFields[Row] = new PgtestnullFields[Row] { + override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala index b3e2a9a5aa..baf59fc16d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala @@ -47,7 +47,7 @@ import typo.dsl.UpdateBuilder class PgtestnullRepoImpl extends PgtestnullRepo { override def delete: DeleteBuilder[PgtestnullFields, PgtestnullRow] = { - DeleteBuilder("public.pgtestnull", PgtestnullFields) + DeleteBuilder("public.pgtestnull", PgtestnullFields.structure) } override def insert(unsaved: PgtestnullRow): ConnectionIO[PgtestnullRow] = { sql"""insert into public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -59,12 +59,12 @@ class PgtestnullRepoImpl extends PgtestnullRepo { new FragmentOps(sql"""COPY public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""").copyIn(unsaved, batchSize)(PgtestnullRow.text) } override def select: SelectBuilder[PgtestnullFields, PgtestnullRow] = { - SelectBuilderSql("public.pgtestnull", PgtestnullFields, PgtestnullRow.read) + SelectBuilderSql("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.read) } override def selectAll: Stream[ConnectionIO, PgtestnullRow] = { sql"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" from public.pgtestnull""".query(PgtestnullRow.read).stream } override def update: UpdateBuilder[PgtestnullFields, PgtestnullRow] = { - UpdateBuilder("public.pgtestnull", PgtestnullFields, PgtestnullRow.read) + UpdateBuilder("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.read) } } diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala deleted file mode 100644 index a5e6a04b14..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtestnull - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PgtestnullStructure[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) - extends Relation[PgtestnullFields, PgtestnullRow, Row] - with PgtestnullFields[Row] { outer => - - override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): PgtestnullStructure[NewRow] = - new PgtestnullStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersFields.scala index 13061aa062..ad568b3fab 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersFields.scala @@ -10,8 +10,10 @@ package users import adventureworks.customtypes.TypoInstant import adventureworks.customtypes.TypoUnknownCitext import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait UsersFields[Row] { val userId: IdField[UsersId, Row] @@ -22,5 +24,29 @@ trait UsersFields[Row] { val createdAt: Field[TypoInstant, Row] val verifiedOn: OptField[TypoInstant, Row] } -object UsersFields extends UsersStructure[UsersRow](None, identity, (_, x) => x) +object UsersFields { + val structure: Relation[UsersFields, UsersRow, UsersRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) + extends Relation[UsersFields, UsersRow, Row] { + + override val fields: UsersFields[Row] = new UsersFields[Row] { + override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) + override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) + override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) + override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) + override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.userId, fields.name, fields.lastName, fields.email, fields.password, fields.createdAt, fields.verifiedOn) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala index 18e3e35a32..6cb17cb609 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala @@ -28,7 +28,7 @@ class UsersRepoImpl extends UsersRepo { sql"""delete from public.users where "user_id" = ${fromWrite(userId)(Write.fromPut(UsersId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilder("public.users", UsersFields) + DeleteBuilder("public.users", UsersFields.structure) } override def insert(unsaved: UsersRow): ConnectionIO[UsersRow] = { sql"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") @@ -72,7 +72,7 @@ class UsersRepoImpl extends UsersRepo { new FragmentOps(sql"""COPY public.users("user_id", "name", "last_name", "email", "password", "verified_on", "created_at") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(UsersRowUnsaved.text) } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderSql("public.users", UsersFields, UsersRow.read) + SelectBuilderSql("public.users", UsersFields.structure, UsersRow.read) } override def selectAll: Stream[ConnectionIO, UsersRow] = { sql"""select "user_id", "name", "last_name", "email"::text, "password", "created_at"::text, "verified_on"::text from public.users""".query(UsersRow.read).stream @@ -104,7 +104,7 @@ class UsersRepoImpl extends UsersRepo { .map(_ > 0) } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilder("public.users", UsersFields, UsersRow.read) + UpdateBuilder("public.users", UsersFields.structure, UsersRow.read) } override def upsert(unsaved: UsersRow): ConnectionIO[UsersRow] = { sql"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala index 2129f57c22..a14c2c9741 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala @@ -28,7 +28,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], delay(map.remove(userId).isDefined) } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilderMock(DeleteParams.empty, UsersFields, map) + DeleteBuilderMock(DeleteParams.empty, UsersFields.structure.fields, map) } override def insert(unsaved: UsersRow): ConnectionIO[UsersRow] = { delay { @@ -66,7 +66,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], } } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderMock(UsersFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(UsersFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, UsersRow] = { Stream.emits(map.values.toList) @@ -92,7 +92,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], } } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilderMock(UpdateParams.empty, UsersFields, map) + UpdateBuilderMock(UpdateParams.empty, UsersFields.structure.fields, map) } override def upsert(unsaved: UsersRow): ConnectionIO[UsersRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala deleted file mode 100644 index df2145cd74..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package users - -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoUnknownCitext -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class UsersStructure[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) - extends Relation[UsersFields, UsersRow, Row] - with UsersFields[Row] { outer => - - override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) - override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) - override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) - override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) - override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](userId, name, lastName, email, password, createdAt, verifiedOn) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): UsersStructure[NewRow] = - new UsersStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala index abc2ebb2ab..37dee82d95 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala @@ -12,8 +12,10 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductvendorFields[Row] { val productid: IdField[ProductId, Row] @@ -28,5 +30,33 @@ trait ProductvendorFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductvendorFields extends ProductvendorStructure[ProductvendorRow](None, identity, (_, x) => x) +object ProductvendorFields { + val structure: Relation[ProductvendorFields, ProductvendorRow, ProductvendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) + extends Relation[ProductvendorFields, ProductvendorRow, Row] { + + override val fields: ProductvendorFields[Row] = new ProductvendorFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala index c2ac08cf3c..9ab67e6026 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala @@ -30,7 +30,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { sql"""delete from purchasing.productvendor where "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))} AND "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilder("purchasing.productvendor", ProductvendorFields) + DeleteBuilder("purchasing.productvendor", ProductvendorFields.structure) } override def insert(unsaved: ProductvendorRow): ConnectionIO[ProductvendorRow] = { sql"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") @@ -78,7 +78,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { new FragmentOps(sql"""COPY purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ProductvendorRowUnsaved.text) } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderSql("purchasing.productvendor", ProductvendorFields, ProductvendorRow.read) + SelectBuilderSql("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.read) } override def selectAll: Stream[ConnectionIO, ProductvendorRow] = { sql"""select "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text from purchasing.productvendor""".query(ProductvendorRow.read).stream @@ -104,7 +104,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { .map(_ > 0) } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilder("purchasing.productvendor", ProductvendorFields, ProductvendorRow.read) + UpdateBuilder("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.read) } override def upsert(unsaved: ProductvendorRow): ConnectionIO[ProductvendorRow] = { sql"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala index e08a366032..6fef9df938 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala @@ -27,7 +27,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductvendorFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductvendorFields.structure.fields, map) } override def insert(unsaved: ProductvendorRow): ConnectionIO[ProductvendorRow] = { delay { @@ -65,7 +65,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven } } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderMock(ProductvendorFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ProductvendorFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ProductvendorRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven } } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductvendorFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductvendorFields.structure.fields, map) } override def upsert(unsaved: ProductvendorRow): ConnectionIO[ProductvendorRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala deleted file mode 100644 index 2499959af1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package productvendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductvendorStructure[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) - extends Relation[ProductvendorFields, ProductvendorRow, Row] - with ProductvendorFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): ProductvendorStructure[NewRow] = - new ProductvendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala index b66e95a16d..75cca10754 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PurchaseorderdetailFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -25,5 +27,31 @@ trait PurchaseorderdetailFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderdetailFields extends PurchaseorderdetailStructure[PurchaseorderdetailRow](None, identity, (_, x) => x) +object PurchaseorderdetailFields { + val structure: Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, PurchaseorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) + extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] { + + override val fields: PurchaseorderdetailFields[Row] = new PurchaseorderdetailFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala index 1551b07029..6d737ead0d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala @@ -19,7 +19,7 @@ import typo.dsl.SelectBuilderSql class PurchaseorderdetailRepoImpl extends PurchaseorderdetailRepo { override def select: SelectBuilder[PurchaseorderdetailFields, PurchaseorderdetailRow] = { - SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields, PurchaseorderdetailRow.read) + SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields.structure, PurchaseorderdetailRow.read) } override def selectAll: Stream[ConnectionIO, PurchaseorderdetailRow] = { sql"""select "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text from purchasing.purchaseorderdetail""".query(PurchaseorderdetailRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala deleted file mode 100644 index 2d1db47893..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PurchaseorderdetailStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) - extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] - with PurchaseorderdetailFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): PurchaseorderdetailStructure[NewRow] = - new PurchaseorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala index 3289fd3a0c..a177fe4c26 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PurchaseorderheaderFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -29,5 +31,34 @@ trait PurchaseorderheaderFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderheaderFields extends PurchaseorderheaderStructure[PurchaseorderheaderRow](None, identity, (_, x) => x) +object PurchaseorderheaderFields { + val structure: Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, PurchaseorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) + extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] { + + override val fields: PurchaseorderheaderFields[Row] = new PurchaseorderheaderFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala index 5e7acf7135..d51f688702 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala @@ -30,7 +30,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { sql"""delete from purchasing.purchaseorderheader where "purchaseorderid" = ${fromWrite(purchaseorderid)(Write.fromPut(PurchaseorderheaderId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields) + DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure) } override def insert(unsaved: PurchaseorderheaderRow): ConnectionIO[PurchaseorderheaderRow] = { sql"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") @@ -100,7 +100,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { new FragmentOps(sql"""COPY purchasing.purchaseorderheader("employeeid", "vendorid", "shipmethodid", "shipdate", "purchaseorderid", "revisionnumber", "status", "orderdate", "subtotal", "taxamt", "freight", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PurchaseorderheaderRowUnsaved.text) } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.read) + SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.read) } override def selectAll: Stream[ConnectionIO, PurchaseorderheaderRow] = { sql"""select "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text from purchasing.purchaseorderheader""".query(PurchaseorderheaderRow.read).stream @@ -131,7 +131,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { .map(_ > 0) } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.read) + UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.read) } override def upsert(unsaved: PurchaseorderheaderRow): ConnectionIO[PurchaseorderheaderRow] = { sql"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala index b91262db3b..586680d241 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala @@ -27,7 +27,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved delay(map.remove(purchaseorderid).isDefined) } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def insert(unsaved: PurchaseorderheaderRow): ConnectionIO[PurchaseorderheaderRow] = { delay { @@ -65,7 +65,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved } } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderMock(PurchaseorderheaderFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PurchaseorderheaderFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PurchaseorderheaderRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved } } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def upsert(unsaved: PurchaseorderheaderRow): ConnectionIO[PurchaseorderheaderRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala deleted file mode 100644 index e35523c02d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PurchaseorderheaderStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) - extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] - with PurchaseorderheaderFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): PurchaseorderheaderStructure[NewRow] = - new PurchaseorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala index 5d1d6be534..af04c0d732 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShipmethodFields[Row] { val shipmethodid: IdField[ShipmethodId, Row] @@ -21,5 +23,28 @@ trait ShipmethodFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShipmethodFields extends ShipmethodStructure[ShipmethodRow](None, identity, (_, x) => x) +object ShipmethodFields { + val structure: Relation[ShipmethodFields, ShipmethodRow, ShipmethodRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) + extends Relation[ShipmethodFields, ShipmethodRow, Row] { + + override val fields: ShipmethodFields[Row] = new ShipmethodFields[Row] { + override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala index e165f7081a..5779a5fcbd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala @@ -29,7 +29,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { sql"""delete from purchasing.shipmethod where "shipmethodid" = ${fromWrite(shipmethodid)(Write.fromPut(ShipmethodId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilder("purchasing.shipmethod", ShipmethodFields) + DeleteBuilder("purchasing.shipmethod", ShipmethodFields.structure) } override def insert(unsaved: ShipmethodRow): ConnectionIO[ShipmethodRow] = { sql"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") @@ -84,7 +84,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { new FragmentOps(sql"""COPY purchasing.shipmethod("name", "shipmethodid", "shipbase", "shiprate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ShipmethodRowUnsaved.text) } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderSql("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.read) + SelectBuilderSql("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.read) } override def selectAll: Stream[ConnectionIO, ShipmethodRow] = { sql"""select "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text from purchasing.shipmethod""".query(ShipmethodRow.read).stream @@ -109,7 +109,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { .map(_ > 0) } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilder("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.read) + UpdateBuilder("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.read) } override def upsert(unsaved: ShipmethodRow): ConnectionIO[ShipmethodRow] = { sql"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala index 9ec5406d70..d34bfebe8d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala @@ -27,7 +27,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], delay(map.remove(shipmethodid).isDefined) } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilderMock(DeleteParams.empty, ShipmethodFields, map) + DeleteBuilderMock(DeleteParams.empty, ShipmethodFields.structure.fields, map) } override def insert(unsaved: ShipmethodRow): ConnectionIO[ShipmethodRow] = { delay { @@ -65,7 +65,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], } } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderMock(ShipmethodFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ShipmethodFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ShipmethodRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], } } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilderMock(UpdateParams.empty, ShipmethodFields, map) + UpdateBuilderMock(UpdateParams.empty, ShipmethodFields.structure.fields, map) } override def upsert(unsaved: ShipmethodRow): ConnectionIO[ShipmethodRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala deleted file mode 100644 index 90cfaab1ca..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package shipmethod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShipmethodStructure[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) - extends Relation[ShipmethodFields, ShipmethodRow, Row] - with ShipmethodFields[Row] { outer => - - override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): ShipmethodStructure[NewRow] = - new ShipmethodStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala index 4e5bed797b..cfa02cbff3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala @@ -14,8 +14,10 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VendorFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -27,5 +29,30 @@ trait VendorFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VendorFields extends VendorStructure[VendorRow](None, identity, (_, x) => x) +object VendorFields { + val structure: Relation[VendorFields, VendorRow, VendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) + extends Relation[VendorFields, VendorRow, Row] { + + override val fields: VendorFields[Row] = new VendorFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala index 4646d2ba3d..9fccf69590 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala @@ -32,7 +32,7 @@ class VendorRepoImpl extends VendorRepo { sql"""delete from purchasing.vendor where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilder("purchasing.vendor", VendorFields) + DeleteBuilder("purchasing.vendor", VendorFields.structure) } override def insert(unsaved: VendorRow): ConnectionIO[VendorRow] = { sql"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") @@ -83,7 +83,7 @@ class VendorRepoImpl extends VendorRepo { new FragmentOps(sql"""COPY purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "purchasingwebserviceurl", "preferredvendorstatus", "activeflag", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(VendorRowUnsaved.text) } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderSql("purchasing.vendor", VendorFields, VendorRow.read) + SelectBuilderSql("purchasing.vendor", VendorFields.structure, VendorRow.read) } override def selectAll: Stream[ConnectionIO, VendorRow] = { sql"""select "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text from purchasing.vendor""".query(VendorRow.read).stream @@ -110,7 +110,7 @@ class VendorRepoImpl extends VendorRepo { .map(_ > 0) } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilder("purchasing.vendor", VendorFields, VendorRow.read) + UpdateBuilder("purchasing.vendor", VendorFields.structure, VendorRow.read) } override def upsert(unsaved: VendorRow): ConnectionIO[VendorRow] = { sql"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala index 1da12f3406..1ee1f0a738 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala @@ -28,7 +28,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilderMock(DeleteParams.empty, VendorFields, map) + DeleteBuilderMock(DeleteParams.empty, VendorFields.structure.fields, map) } override def insert(unsaved: VendorRow): ConnectionIO[VendorRow] = { delay { @@ -66,7 +66,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], } } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderMock(VendorFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(VendorFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, VendorRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], } } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilderMock(UpdateParams.empty, VendorFields, map) + UpdateBuilderMock(UpdateParams.empty, VendorFields.structure.fields, map) } override def upsert(unsaved: VendorRow): ConnectionIO[VendorRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala deleted file mode 100644 index dea19ffaa1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VendorStructure[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) - extends Relation[VendorFields, VendorRow, Row] - with VendorFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): VendorStructure[NewRow] = - new VendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala index 9b5004aa23..d8035477dc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vvendorwithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VvendorwithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VvendorwithaddressesViewFields extends VvendorwithaddressesViewStructure[VvendorwithaddressesViewRow](None, identity, (_, x) => x) +object VvendorwithaddressesViewFields { + val structure: Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, VvendorwithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) + extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] { + + override val fields: VvendorwithaddressesViewFields[Row] = new VvendorwithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala index 29e9a70113..ffe09b0aae 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VvendorwithaddressesViewRepoImpl extends VvendorwithaddressesViewRepo { override def select: SelectBuilder[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow] = { - SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields, VvendorwithaddressesViewRow.read) + SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields.structure, VvendorwithaddressesViewRow.read) } override def selectAll: Stream[ConnectionIO, VvendorwithaddressesViewRow] = { sql"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" from purchasing.vvendorwithaddresses""".query(VvendorwithaddressesViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala deleted file mode 100644 index 01e59470ed..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) - extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] - with VvendorwithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): VvendorwithaddressesViewStructure[NewRow] = - new VvendorwithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala index 6208dfdd89..680b225e00 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VvendorwithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VvendorwithcontactsViewFields extends VvendorwithcontactsViewStructure[VvendorwithcontactsViewRow](None, identity, (_, x) => x) +object VvendorwithcontactsViewFields { + val structure: Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, VvendorwithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) + extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] { + + override val fields: VvendorwithcontactsViewFields[Row] = new VvendorwithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala index 9f8d4ddd93..8db7431c13 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VvendorwithcontactsViewRepoImpl extends VvendorwithcontactsViewRepo { override def select: SelectBuilder[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow] = { - SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields, VvendorwithcontactsViewRow.read) + SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields.structure, VvendorwithcontactsViewRow.read) } override def selectAll: Stream[ConnectionIO, VvendorwithcontactsViewRow] = { sql"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" from purchasing.vvendorwithcontacts""".query(VvendorwithcontactsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala deleted file mode 100644 index d0e892230d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) - extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] - with VvendorwithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): VvendorwithcontactsViewStructure[NewRow] = - new VvendorwithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala index 9abdec14b2..868041fd0a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CustomerId, Row] @@ -24,5 +26,29 @@ trait CViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala index 1a821ec6eb..3e136cff74 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("sa.c", CViewFields, CViewRow.read) + SelectBuilderSql("sa.c", CViewFields.structure, CViewRow.read) } override def selectAll: Stream[ConnectionIO, CViewRow] = { sql"""select "id", "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text from sa.c""".query(CViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala deleted file mode 100644 index 973be24e13..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala index 1ac3a32ec9..14a74e0e4d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CcViewFields[Row] { val id: Field[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,29 @@ trait CcViewFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CcViewFields extends CcViewStructure[CcViewRow](None, identity, (_, x) => x) +object CcViewFields { + val structure: Relation[CcViewFields, CcViewRow, CcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) + extends Relation[CcViewFields, CcViewRow, Row] { + + override val fields: CcViewFields[Row] = new CcViewFields[Row] { + override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala index 1bbadb879c..9aa2172261 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CcViewRepoImpl extends CcViewRepo { override def select: SelectBuilder[CcViewFields, CcViewRow] = { - SelectBuilderSql("sa.cc", CcViewFields, CcViewRow.read) + SelectBuilderSql("sa.cc", CcViewFields.structure, CcViewRow.read) } override def selectAll: Stream[ConnectionIO, CcViewRow] = { sql"""select "id", "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text from sa.cc""".query(CcViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala deleted file mode 100644 index 247390ff7b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CcViewStructure[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) - extends Relation[CcViewFields, CcViewRow, Row] - with CcViewFields[Row] { outer => - - override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): CcViewStructure[NewRow] = - new CcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala index d4e16756d0..f54c580ed4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import adventureworks.sales.currencyrate.CurrencyrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val currencyrateid: Field[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CrViewFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala index bb9dab5271..54bf1127fb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("sa.cr", CrViewFields, CrViewRow.read) + SelectBuilderSql("sa.cr", CrViewFields.structure, CrViewRow.read) } override def selectAll: Stream[ConnectionIO, CrViewRow] = { sql"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text from sa.cr""".query(CrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala deleted file mode 100644 index 0d386f89eb..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import adventureworks.sales.currencyrate.CurrencyrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala index 37d0698bdc..1575037e7f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrcViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val currencycode: Field[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrcViewFields extends CrcViewStructure[CrcViewRow](None, identity, (_, x) => x) +object CrcViewFields { + val structure: Relation[CrcViewFields, CrcViewRow, CrcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) + extends Relation[CrcViewFields, CrcViewRow, Row] { + + override val fields: CrcViewFields[Row] = new CrcViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala index e4ec6a112c..132c5c3779 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CrcViewRepoImpl extends CrcViewRepo { override def select: SelectBuilder[CrcViewFields, CrcViewRow] = { - SelectBuilderSql("sa.crc", CrcViewFields, CrcViewRow.read) + SelectBuilderSql("sa.crc", CrcViewFields.structure, CrcViewRow.read) } override def selectAll: Stream[ConnectionIO, CrcViewRow] = { sql"""select "countryregioncode", "currencycode", "modifieddate"::text from sa.crc""".query(CrcViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala deleted file mode 100644 index 5b718a802d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package crc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrcViewStructure[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) - extends Relation[CrcViewFields, CrcViewRow, Row] - with CrcViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): CrcViewStructure[NewRow] = - new CrcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala index 561a3cbd51..cb3d130142 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CuViewFields[Row] { val id: Field[CurrencyId, Row] @@ -18,5 +20,26 @@ trait CuViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CuViewFields extends CuViewStructure[CuViewRow](None, identity, (_, x) => x) +object CuViewFields { + val structure: Relation[CuViewFields, CuViewRow, CuViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) + extends Relation[CuViewFields, CuViewRow, Row] { + + override val fields: CuViewFields[Row] = new CuViewFields[Row] { + override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala index dd44043a57..269e8b8999 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class CuViewRepoImpl extends CuViewRepo { override def select: SelectBuilder[CuViewFields, CuViewRow] = { - SelectBuilderSql("sa.cu", CuViewFields, CuViewRow.read) + SelectBuilderSql("sa.cu", CuViewFields.structure, CuViewRow.read) } override def selectAll: Stream[ConnectionIO, CuViewRow] = { sql"""select "id", "currencycode", "name", "modifieddate"::text from sa.cu""".query(CuViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala deleted file mode 100644 index 309775518a..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cu - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CuViewStructure[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) - extends Relation[CuViewFields, CuViewRow, Row] - with CuViewFields[Row] { outer => - - override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): CuViewStructure[NewRow] = - new CuViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala index b6907470a9..7b5f37a711 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PccViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait PccViewFields[Row] { val creditcardid: Field[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PccViewFields extends PccViewStructure[PccViewRow](None, identity, (_, x) => x) +object PccViewFields { + val structure: Relation[PccViewFields, PccViewRow, PccViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) + extends Relation[PccViewFields, PccViewRow, Row] { + + override val fields: PccViewFields[Row] = new PccViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala index b8cae2a7cb..6d69d306cf 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class PccViewRepoImpl extends PccViewRepo { override def select: SelectBuilder[PccViewFields, PccViewRow] = { - SelectBuilderSql("sa.pcc", PccViewFields, PccViewRow.read) + SelectBuilderSql("sa.pcc", PccViewFields.structure, PccViewRow.read) } override def selectAll: Stream[ConnectionIO, PccViewRow] = { sql"""select "id", "businessentityid", "creditcardid", "modifieddate"::text from sa.pcc""".query(PccViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala deleted file mode 100644 index 9332c2a157..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package pcc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PccViewStructure[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) - extends Relation[PccViewFields, PccViewRow, Row] - with PccViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): PccViewStructure[NewRow] = - new PccViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala index 3ed9b93bd2..5b134747ee 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait SViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala index 05a145024f..560fceb1a2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("sa.s", SViewFields, SViewRow.read) + SelectBuilderSql("sa.s", SViewFields.structure, SViewRow.read) } override def selectAll: Stream[ConnectionIO, SViewRow] = { sql"""select "id", "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text from sa.s""".query(SViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala deleted file mode 100644 index 3a1ef7e533..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala index 6dc86bbbd5..4da657ee9b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.sales.shoppingcartitem.ShoppingcartitemId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SciViewFields[Row] { val id: Field[ShoppingcartitemId, Row] @@ -21,5 +23,29 @@ trait SciViewFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SciViewFields extends SciViewStructure[SciViewRow](None, identity, (_, x) => x) +object SciViewFields { + val structure: Relation[SciViewFields, SciViewRow, SciViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) + extends Relation[SciViewFields, SciViewRow, Row] { + + override val fields: SciViewFields[Row] = new SciViewFields[Row] { + override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala index 1094ba49b4..b421e02fa7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SciViewRepoImpl extends SciViewRepo { override def select: SelectBuilder[SciViewFields, SciViewRow] = { - SelectBuilderSql("sa.sci", SciViewFields, SciViewRow.read) + SelectBuilderSql("sa.sci", SciViewFields.structure, SciViewRow.read) } override def selectAll: Stream[ConnectionIO, SciViewRow] = { sql"""select "id", "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text from sa.sci""".query(SciViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala deleted file mode 100644 index f253da1923..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sci - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.sales.shoppingcartitem.ShoppingcartitemId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SciViewStructure[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) - extends Relation[SciViewFields, SciViewRow, Row] - with SciViewFields[Row] { outer => - - override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): SciViewStructure[NewRow] = - new SciViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala index 4c304c3efa..d6207238ad 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SoViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -27,5 +29,34 @@ trait SoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SoViewFields extends SoViewStructure[SoViewRow](None, identity, (_, x) => x) +object SoViewFields { + val structure: Relation[SoViewFields, SoViewRow, SoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) + extends Relation[SoViewFields, SoViewRow, Row] { + + override val fields: SoViewFields[Row] = new SoViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala index 79599a3e25..ed747c1c9b 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SoViewRepoImpl extends SoViewRepo { override def select: SelectBuilder[SoViewFields, SoViewRow] = { - SelectBuilderSql("sa.so", SoViewFields, SoViewRow.read) + SelectBuilderSql("sa.so", SoViewFields.structure, SoViewRow.read) } override def selectAll: Stream[ConnectionIO, SoViewRow] = { sql"""select "id", "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text from sa.so""".query(SoViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala deleted file mode 100644 index 520a7fbf2d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package so - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SoViewStructure[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) - extends Relation[SoViewFields, SoViewRow, Row] - with SoViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): SoViewStructure[NewRow] = - new SoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala index cf7338e74f..02bd8b80ba 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SodViewFields[Row] { val id: Field[Int, Row] @@ -29,5 +31,33 @@ trait SodViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SodViewFields extends SodViewStructure[SodViewRow](None, identity, (_, x) => x) +object SodViewFields { + val structure: Relation[SodViewFields, SodViewRow, SodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) + extends Relation[SodViewFields, SodViewRow, Row] { + + override val fields: SodViewFields[Row] = new SodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala index d1b8656ad3..9399a81f46 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SodViewRepoImpl extends SodViewRepo { override def select: SelectBuilder[SodViewFields, SodViewRow] = { - SelectBuilderSql("sa.sod", SodViewFields, SodViewRow.read) + SelectBuilderSql("sa.sod", SodViewFields.structure, SodViewRow.read) } override def selectAll: Stream[ConnectionIO, SodViewRow] = { sql"""select "id", "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text from sa.sod""".query(SodViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala deleted file mode 100644 index 8fbde8f240..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SodViewStructure[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) - extends Relation[SodViewFields, SodViewRow, Row] - with SodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): SodViewStructure[NewRow] = - new SodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala index 6c1c92f5dc..0352e3f4f0 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala @@ -22,7 +22,9 @@ import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SohViewFields[Row] { val id: Field[SalesorderheaderId, Row] @@ -52,5 +54,48 @@ trait SohViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohViewFields extends SohViewStructure[SohViewRow](None, identity, (_, x) => x) +object SohViewFields { + val structure: Relation[SohViewFields, SohViewRow, SohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) + extends Relation[SohViewFields, SohViewRow, Row] { + + override val fields: SohViewFields[Row] = new SohViewFields[Row] { + override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala index 34cec54744..bfb2bd723c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SohViewRepoImpl extends SohViewRepo { override def select: SelectBuilder[SohViewFields, SohViewRow] = { - SelectBuilderSql("sa.soh", SohViewFields, SohViewRow.read) + SelectBuilderSql("sa.soh", SohViewFields.structure, SohViewRow.read) } override def selectAll: Stream[ConnectionIO, SohViewRow] = { sql"""select "id", "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text from sa.soh""".query(SohViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala deleted file mode 100644 index 3dbb6fb70e..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala +++ /dev/null @@ -1,65 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package soh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SohViewStructure[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) - extends Relation[SohViewFields, SohViewRow, Row] - with SohViewFields[Row] { outer => - - override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): SohViewStructure[NewRow] = - new SohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala index dec06a94ba..e86f54b1a4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SohsrViewFields[Row] { val salesorderid: Field[SalesorderheaderId, Row] val salesreasonid: Field[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohsrViewFields extends SohsrViewStructure[SohsrViewRow](None, identity, (_, x) => x) +object SohsrViewFields { + val structure: Relation[SohsrViewFields, SohsrViewRow, SohsrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) + extends Relation[SohsrViewFields, SohsrViewRow, Row] { + + override val fields: SohsrViewFields[Row] = new SohsrViewFields[Row] { + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala index 8e5a4b7792..6de417073c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SohsrViewRepoImpl extends SohsrViewRepo { override def select: SelectBuilder[SohsrViewFields, SohsrViewRow] = { - SelectBuilderSql("sa.sohsr", SohsrViewFields, SohsrViewRow.read) + SelectBuilderSql("sa.sohsr", SohsrViewFields.structure, SohsrViewRow.read) } override def selectAll: Stream[ConnectionIO, SohsrViewRow] = { sql"""select "salesorderid", "salesreasonid", "modifieddate"::text from sa.sohsr""".query(SohsrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala deleted file mode 100644 index 9fa9d7c4bf..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sohsr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SohsrViewStructure[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) - extends Relation[SohsrViewFields, SohsrViewRow, Row] - with SohsrViewFields[Row] { outer => - - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): SohsrViewStructure[NewRow] = - new SohsrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala index 5a3d272dc3..2085675349 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SopViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -20,5 +22,27 @@ trait SopViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SopViewFields extends SopViewStructure[SopViewRow](None, identity, (_, x) => x) +object SopViewFields { + val structure: Relation[SopViewFields, SopViewRow, SopViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) + extends Relation[SopViewFields, SopViewRow, Row] { + + override val fields: SopViewFields[Row] = new SopViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala index 6c60af4467..1d01c843a1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SopViewRepoImpl extends SopViewRepo { override def select: SelectBuilder[SopViewFields, SopViewRow] = { - SelectBuilderSql("sa.sop", SopViewFields, SopViewRow.read) + SelectBuilderSql("sa.sop", SopViewFields.structure, SopViewRow.read) } override def selectAll: Stream[ConnectionIO, SopViewRow] = { sql"""select "id", "specialofferid", "productid", "rowguid", "modifieddate"::text from sa.sop""".query(SopViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala deleted file mode 100644 index c08095d790..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sop - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SopViewStructure[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) - extends Relation[SopViewFields, SopViewRow, Row] - with SopViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): SopViewStructure[NewRow] = - new SopViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala index e7971f3a5c..5d1e67a5e3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala index bea458fa6a..b244213ac6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("sa.sp", SpViewFields, SpViewRow.read) + SelectBuilderSql("sa.sp", SpViewFields.structure, SpViewRow.read) } override def selectAll: Stream[ConnectionIO, SpViewRow] = { sql"""select "id", "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text from sa.sp""".query(SpViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala deleted file mode 100644 index 0c0b5a2eaa..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala index bb06ed4ef0..471daad168 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpqhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait SpqhViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpqhViewFields extends SpqhViewStructure[SpqhViewRow](None, identity, (_, x) => x) +object SpqhViewFields { + val structure: Relation[SpqhViewFields, SpqhViewRow, SpqhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) + extends Relation[SpqhViewFields, SpqhViewRow, Row] { + + override val fields: SpqhViewFields[Row] = new SpqhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala index 6f70fdec85..b3dba4558c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SpqhViewRepoImpl extends SpqhViewRepo { override def select: SelectBuilder[SpqhViewFields, SpqhViewRow] = { - SelectBuilderSql("sa.spqh", SpqhViewFields, SpqhViewRow.read) + SelectBuilderSql("sa.spqh", SpqhViewFields.structure, SpqhViewRow.read) } override def selectAll: Stream[ConnectionIO, SpqhViewRow] = { sql"""select "id", "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text from sa.spqh""".query(SpqhViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala deleted file mode 100644 index 34b89696d3..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package spqh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpqhViewStructure[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) - extends Relation[SpqhViewFields, SpqhViewRow, Row] - with SpqhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): SpqhViewStructure[NewRow] = - new SpqhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala index ba8f474bc0..a2c960adf2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[SalesreasonId, Row] @@ -19,5 +21,27 @@ trait SrViewFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala index 67096c1f84..2eff0891ce 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("sa.sr", SrViewFields, SrViewRow.read) + SelectBuilderSql("sa.sr", SrViewFields.structure, SrViewRow.read) } override def selectAll: Stream[ConnectionIO, SrViewRow] = { sql"""select "id", "salesreasonid", "name", "reasontype", "modifieddate"::text from sa.sr""".query(SrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala deleted file mode 100644 index 1e139ef1a5..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala index 3a4d8cb334..256cd7fe24 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait StViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -27,5 +29,33 @@ trait StViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StViewFields extends StViewStructure[StViewRow](None, identity, (_, x) => x) +object StViewFields { + val structure: Relation[StViewFields, StViewRow, StViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) + extends Relation[StViewFields, StViewRow, Row] { + + override val fields: StViewFields[Row] = new StViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala index 7df570b3ac..597fcd8f39 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class StViewRepoImpl extends StViewRepo { override def select: SelectBuilder[StViewFields, StViewRow] = { - SelectBuilderSql("sa.st", StViewFields, StViewRow.read) + SelectBuilderSql("sa.st", StViewFields.structure, StViewRow.read) } override def selectAll: Stream[ConnectionIO, StViewRow] = { sql"""select "id", "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text from sa.st""".query(StViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala deleted file mode 100644 index eb457f7da7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package st - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class StViewStructure[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) - extends Relation[StViewFields, StViewRow, Row] - with StViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): StViewStructure[NewRow] = - new StViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala index 9b2188ab3b..b785d079a8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SthViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -23,5 +25,29 @@ trait SthViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SthViewFields extends SthViewStructure[SthViewRow](None, identity, (_, x) => x) +object SthViewFields { + val structure: Relation[SthViewFields, SthViewRow, SthViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) + extends Relation[SthViewFields, SthViewRow, Row] { + + override val fields: SthViewFields[Row] = new SthViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala index e607043701..86ba67233e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class SthViewRepoImpl extends SthViewRepo { override def select: SelectBuilder[SthViewFields, SthViewRow] = { - SelectBuilderSql("sa.sth", SthViewFields, SthViewRow.read) + SelectBuilderSql("sa.sth", SthViewFields.structure, SthViewRow.read) } override def selectAll: Stream[ConnectionIO, SthViewRow] = { sql"""select "id", "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text from sa.sth""".query(SthViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala deleted file mode 100644 index 77b4f4a831..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sth - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SthViewStructure[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) - extends Relation[SthViewFields, SthViewRow, Row] - with SthViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): SthViewStructure[NewRow] = - new SthViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala index 3a2d182b62..8cc4154f37 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala @@ -14,6 +14,8 @@ import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import adventureworks.sales.salestaxrate.SalestaxrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait TrViewFields[Row] { val id: Field[SalestaxrateId, Row] @@ -25,5 +27,30 @@ trait TrViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TrViewFields extends TrViewStructure[TrViewRow](None, identity, (_, x) => x) +object TrViewFields { + val structure: Relation[TrViewFields, TrViewRow, TrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) + extends Relation[TrViewFields, TrViewRow, Row] { + + override val fields: TrViewFields[Row] = new TrViewFields[Row] { + override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala index 5720a9cbca..e74bf22c03 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class TrViewRepoImpl extends TrViewRepo { override def select: SelectBuilder[TrViewFields, TrViewRow] = { - SelectBuilderSql("sa.tr", TrViewFields, TrViewRow.read) + SelectBuilderSql("sa.tr", TrViewFields.structure, TrViewRow.read) } override def selectAll: Stream[ConnectionIO, TrViewRow] = { sql"""select "id", "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text from sa.tr""".query(TrViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala deleted file mode 100644 index 2726f9efad..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package tr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import adventureworks.sales.salestaxrate.SalestaxrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class TrViewStructure[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) - extends Relation[TrViewFields, TrViewRow, Row] - with TrViewFields[Row] { outer => - - override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): TrViewStructure[NewRow] = - new TrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala index e63f0dd19c..0bdb14c8d5 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregioncurrencyFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val currencycode: IdField[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregioncurrencyFields extends CountryregioncurrencyStructure[CountryregioncurrencyRow](None, identity, (_, x) => x) +object CountryregioncurrencyFields { + val structure: Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, CountryregioncurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) + extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] { + + override val fields: CountryregioncurrencyFields[Row] = new CountryregioncurrencyFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala index 3a02fdf0a9..a45750b0f2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala @@ -28,7 +28,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { sql"""delete from sales.countryregioncurrency where "countryregioncode" = ${fromWrite(compositeId.countryregioncode)(Write.fromPut(CountryregionId.put))} AND "currencycode" = ${fromWrite(compositeId.currencycode)(Write.fromPut(CurrencyId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields) + DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure) } override def insert(unsaved: CountryregioncurrencyRow): ConnectionIO[CountryregioncurrencyRow] = { sql"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") @@ -68,7 +68,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { new FragmentOps(sql"""COPY sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CountryregioncurrencyRowUnsaved.text) } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.read) + SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.read) } override def selectAll: Stream[ConnectionIO, CountryregioncurrencyRow] = { sql"""select "countryregioncode", "currencycode", "modifieddate"::text from sales.countryregioncurrency""".query(CountryregioncurrencyRow.read).stream @@ -86,7 +86,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { .map(_ > 0) } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.read) + UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.read) } override def upsert(unsaved: CountryregioncurrencyRow): ConnectionIO[CountryregioncurrencyRow] = { sql"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala index 38e285220e..0204bdc87c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala @@ -27,7 +27,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def insert(unsaved: CountryregioncurrencyRow): ConnectionIO[CountryregioncurrencyRow] = { delay { @@ -65,7 +65,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns } } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderMock(CountryregioncurrencyFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CountryregioncurrencyFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CountryregioncurrencyRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns } } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def upsert(unsaved: CountryregioncurrencyRow): ConnectionIO[CountryregioncurrencyRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala deleted file mode 100644 index fe119bdf72..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package countryregioncurrency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregioncurrencyStructure[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) - extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] - with CountryregioncurrencyFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): CountryregioncurrencyStructure[NewRow] = - new CountryregioncurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala index b21f8ef928..7a086d6037 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CreditcardFields[Row] { val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,28 @@ trait CreditcardFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CreditcardFields extends CreditcardStructure[CreditcardRow](None, identity, (_, x) => x) +object CreditcardFields { + val structure: Relation[CreditcardFields, CreditcardRow, CreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) + extends Relation[CreditcardFields, CreditcardRow, Row] { + + override val fields: CreditcardFields[Row] = new CreditcardFields[Row] { + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala index 402eaaef81..4cbe31297c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala @@ -30,7 +30,7 @@ class CreditcardRepoImpl extends CreditcardRepo { sql"""delete from sales.creditcard where "creditcardid" = ${fromWrite(creditcardid)(Write.fromPut(/* user-picked */ CustomCreditcardId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilder("sales.creditcard", CreditcardFields) + DeleteBuilder("sales.creditcard", CreditcardFields.structure) } override def insert(unsaved: CreditcardRow): ConnectionIO[CreditcardRow] = { sql"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") @@ -76,7 +76,7 @@ class CreditcardRepoImpl extends CreditcardRepo { new FragmentOps(sql"""COPY sales.creditcard("cardtype", "cardnumber", "expmonth", "expyear", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CreditcardRowUnsaved.text) } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderSql("sales.creditcard", CreditcardFields, CreditcardRow.read) + SelectBuilderSql("sales.creditcard", CreditcardFields.structure, CreditcardRow.read) } override def selectAll: Stream[ConnectionIO, CreditcardRow] = { sql"""select "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text from sales.creditcard""".query(CreditcardRow.read).stream @@ -101,7 +101,7 @@ class CreditcardRepoImpl extends CreditcardRepo { .map(_ > 0) } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilder("sales.creditcard", CreditcardFields, CreditcardRow.read) + UpdateBuilder("sales.creditcard", CreditcardFields.structure, CreditcardRow.read) } override def upsert(unsaved: CreditcardRow): ConnectionIO[CreditcardRow] = { sql"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala index 33af252582..9dac80de83 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala @@ -29,7 +29,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], delay(map.remove(creditcardid).isDefined) } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, CreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, CreditcardFields.structure.fields, map) } override def insert(unsaved: CreditcardRow): ConnectionIO[CreditcardRow] = { delay { @@ -67,7 +67,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], } } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderMock(CreditcardFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CreditcardFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CreditcardRow] = { Stream.emits(map.values.toList) @@ -90,7 +90,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], } } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, CreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, CreditcardFields.structure.fields, map) } override def upsert(unsaved: CreditcardRow): ConnectionIO[CreditcardRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala deleted file mode 100644 index 4f259e9545..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package creditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CreditcardStructure[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) - extends Relation[CreditcardFields, CreditcardRow, Row] - with CreditcardFields[Row] { outer => - - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): CreditcardStructure[NewRow] = - new CreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala index 079f2ff5cf..960ab415e6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala @@ -10,12 +10,34 @@ package currency import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyFields[Row] { val currencycode: IdField[CurrencyId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyFields extends CurrencyStructure[CurrencyRow](None, identity, (_, x) => x) +object CurrencyFields { + val structure: Relation[CurrencyFields, CurrencyRow, CurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) + extends Relation[CurrencyFields, CurrencyRow, Row] { + + override val fields: CurrencyFields[Row] = new CurrencyFields[Row] { + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala index 23d4baa06f..e918b1a923 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala @@ -27,7 +27,7 @@ class CurrencyRepoImpl extends CurrencyRepo { sql"""delete from sales.currency where "currencycode" = ${fromWrite(currencycode)(Write.fromPut(CurrencyId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilder("sales.currency", CurrencyFields) + DeleteBuilder("sales.currency", CurrencyFields.structure) } override def insert(unsaved: CurrencyRow): ConnectionIO[CurrencyRow] = { sql"""insert into sales.currency("currencycode", "name", "modifieddate") @@ -67,7 +67,7 @@ class CurrencyRepoImpl extends CurrencyRepo { new FragmentOps(sql"""COPY sales.currency("currencycode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CurrencyRowUnsaved.text) } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderSql("sales.currency", CurrencyFields, CurrencyRow.read) + SelectBuilderSql("sales.currency", CurrencyFields.structure, CurrencyRow.read) } override def selectAll: Stream[ConnectionIO, CurrencyRow] = { sql"""select "currencycode", "name", "modifieddate"::text from sales.currency""".query(CurrencyRow.read).stream @@ -89,7 +89,7 @@ class CurrencyRepoImpl extends CurrencyRepo { .map(_ > 0) } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilder("sales.currency", CurrencyFields, CurrencyRow.read) + UpdateBuilder("sales.currency", CurrencyFields.structure, CurrencyRow.read) } override def upsert(unsaved: CurrencyRow): ConnectionIO[CurrencyRow] = { sql"""insert into sales.currency("currencycode", "name", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala index 0a179e15e7..1ea86c2b1a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala @@ -27,7 +27,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], delay(map.remove(currencycode).isDefined) } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyFields.structure.fields, map) } override def insert(unsaved: CurrencyRow): ConnectionIO[CurrencyRow] = { delay { @@ -65,7 +65,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], } } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderMock(CurrencyFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CurrencyFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CurrencyRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], } } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyFields.structure.fields, map) } override def upsert(unsaved: CurrencyRow): ConnectionIO[CurrencyRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala deleted file mode 100644 index 7eeeac8bd7..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyStructure[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) - extends Relation[CurrencyFields, CurrencyRow, Row] - with CurrencyFields[Row] { outer => - - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): CurrencyStructure[NewRow] = - new CurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala index ec65aaace3..17def49bdc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala @@ -10,7 +10,9 @@ package currencyrate import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyrateFields[Row] { val currencyrateid: IdField[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CurrencyrateFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyrateFields extends CurrencyrateStructure[CurrencyrateRow](None, identity, (_, x) => x) +object CurrencyrateFields { + val structure: Relation[CurrencyrateFields, CurrencyrateRow, CurrencyrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) + extends Relation[CurrencyrateFields, CurrencyrateRow, Row] { + + override val fields: CurrencyrateFields[Row] = new CurrencyrateFields[Row] { + override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala index 298bd73951..e6ead02a4a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala @@ -28,7 +28,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { sql"""delete from sales.currencyrate where "currencyrateid" = ${fromWrite(currencyrateid)(Write.fromPut(CurrencyrateId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilder("sales.currencyrate", CurrencyrateFields) + DeleteBuilder("sales.currencyrate", CurrencyrateFields.structure) } override def insert(unsaved: CurrencyrateRow): ConnectionIO[CurrencyrateRow] = { sql"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") @@ -75,7 +75,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { new FragmentOps(sql"""COPY sales.currencyrate("currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "currencyrateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CurrencyrateRowUnsaved.text) } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderSql("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.read) + SelectBuilderSql("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.read) } override def selectAll: Stream[ConnectionIO, CurrencyrateRow] = { sql"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text from sales.currencyrate""".query(CurrencyrateRow.read).stream @@ -101,7 +101,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { .map(_ > 0) } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilder("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.read) + UpdateBuilder("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.read) } override def upsert(unsaved: CurrencyrateRow): ConnectionIO[CurrencyrateRow] = { sql"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala index 6b2cd490b5..6b8aeba5b6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala @@ -27,7 +27,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate delay(map.remove(currencyrateid).isDefined) } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields.structure.fields, map) } override def insert(unsaved: CurrencyrateRow): ConnectionIO[CurrencyrateRow] = { delay { @@ -65,7 +65,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate } } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderMock(CurrencyrateFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CurrencyrateFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CurrencyrateRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate } } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields.structure.fields, map) } override def upsert(unsaved: CurrencyrateRow): ConnectionIO[CurrencyrateRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala deleted file mode 100644 index 72836802d4..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currencyrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyrateStructure[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) - extends Relation[CurrencyrateFields, CurrencyrateRow, Row] - with CurrencyrateFields[Row] { outer => - - override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): CurrencyrateStructure[NewRow] = - new CurrencyrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala index 1710962884..e558f1e8fd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CustomerFields[Row] { val customerid: IdField[CustomerId, Row] @@ -23,5 +25,28 @@ trait CustomerFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CustomerFields extends CustomerStructure[CustomerRow](None, identity, (_, x) => x) +object CustomerFields { + val structure: Relation[CustomerFields, CustomerRow, CustomerRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) + extends Relation[CustomerFields, CustomerRow, Row] { + + override val fields: CustomerFields[Row] = new CustomerFields[Row] { + override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala index 879faa02d2..59e8403375 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala @@ -29,7 +29,7 @@ class CustomerRepoImpl extends CustomerRepo { sql"""delete from sales.customer where "customerid" = ${fromWrite(customerid)(Write.fromPut(CustomerId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilder("sales.customer", CustomerFields) + DeleteBuilder("sales.customer", CustomerFields.structure) } override def insert(unsaved: CustomerRow): ConnectionIO[CustomerRow] = { sql"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class CustomerRepoImpl extends CustomerRepo { new FragmentOps(sql"""COPY sales.customer("personid", "storeid", "territoryid", "customerid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(CustomerRowUnsaved.text) } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderSql("sales.customer", CustomerFields, CustomerRow.read) + SelectBuilderSql("sales.customer", CustomerFields.structure, CustomerRow.read) } override def selectAll: Stream[ConnectionIO, CustomerRow] = { sql"""select "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text from sales.customer""".query(CustomerRow.read).stream @@ -103,7 +103,7 @@ class CustomerRepoImpl extends CustomerRepo { .map(_ > 0) } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilder("sales.customer", CustomerFields, CustomerRow.read) + UpdateBuilder("sales.customer", CustomerFields.structure, CustomerRow.read) } override def upsert(unsaved: CustomerRow): ConnectionIO[CustomerRow] = { sql"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala index 26a0d30404..36632fcbe9 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala @@ -27,7 +27,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], delay(map.remove(customerid).isDefined) } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilderMock(DeleteParams.empty, CustomerFields, map) + DeleteBuilderMock(DeleteParams.empty, CustomerFields.structure.fields, map) } override def insert(unsaved: CustomerRow): ConnectionIO[CustomerRow] = { delay { @@ -65,7 +65,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], } } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderMock(CustomerFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(CustomerFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, CustomerRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], } } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilderMock(UpdateParams.empty, CustomerFields, map) + UpdateBuilderMock(UpdateParams.empty, CustomerFields.structure.fields, map) } override def upsert(unsaved: CustomerRow): ConnectionIO[CustomerRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala deleted file mode 100644 index 079a4d5365..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package customer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CustomerStructure[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) - extends Relation[CustomerFields, CustomerRow, Row] - with CustomerFields[Row] { outer => - - override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): CustomerStructure[NewRow] = - new CustomerStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala index be1477987f..122d7418f1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersoncreditcardFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersoncreditcardFields extends PersoncreditcardStructure[PersoncreditcardRow](None, identity, (_, x) => x) +object PersoncreditcardFields { + val structure: Relation[PersoncreditcardFields, PersoncreditcardRow, PersoncreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) + extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] { + + override val fields: PersoncreditcardFields[Row] = new PersoncreditcardFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala index 20f063329f..0eb8c150c1 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala @@ -28,7 +28,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { sql"""delete from sales.personcreditcard where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "creditcardid" = ${fromWrite(compositeId.creditcardid)(Write.fromPut(/* user-picked */ CustomCreditcardId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilder("sales.personcreditcard", PersoncreditcardFields) + DeleteBuilder("sales.personcreditcard", PersoncreditcardFields.structure) } override def insert(unsaved: PersoncreditcardRow): ConnectionIO[PersoncreditcardRow] = { sql"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") @@ -68,7 +68,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { new FragmentOps(sql"""COPY sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(PersoncreditcardRowUnsaved.text) } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.read) + SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.read) } override def selectAll: Stream[ConnectionIO, PersoncreditcardRow] = { sql"""select "businessentityid", "creditcardid", "modifieddate"::text from sales.personcreditcard""".query(PersoncreditcardRow.read).stream @@ -86,7 +86,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { .map(_ > 0) } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilder("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.read) + UpdateBuilder("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.read) } override def upsert(unsaved: PersoncreditcardRow): ConnectionIO[PersoncreditcardRow] = { sql"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala index fbec2db071..04f5338a16 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala @@ -27,7 +27,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields.structure.fields, map) } override def insert(unsaved: PersoncreditcardRow): ConnectionIO[PersoncreditcardRow] = { delay { @@ -65,7 +65,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers } } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderMock(PersoncreditcardFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(PersoncreditcardFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, PersoncreditcardRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers } } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields.structure.fields, map) } override def upsert(unsaved: PersoncreditcardRow): ConnectionIO[PersoncreditcardRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala deleted file mode 100644 index a2f37949c1..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package personcreditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersoncreditcardStructure[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) - extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] - with PersoncreditcardFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): PersoncreditcardStructure[NewRow] = - new PersoncreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala index 010bff8ba2..d624977d55 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala @@ -14,8 +14,10 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderdetailFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -29,5 +31,32 @@ trait SalesorderdetailFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderdetailFields extends SalesorderdetailStructure[SalesorderdetailRow](None, identity, (_, x) => x) +object SalesorderdetailFields { + val structure: Relation[SalesorderdetailFields, SalesorderdetailRow, SalesorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) + extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] { + + override val fields: SalesorderdetailFields[Row] = new SalesorderdetailFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala index f2ce71dc6b..ca5fe5c2f8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala @@ -32,7 +32,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { sql"""delete from sales.salesorderdetail where "salesorderid" = ${fromWrite(compositeId.salesorderid)(Write.fromPut(SalesorderheaderId.put))} AND "salesorderdetailid" = ${fromWrite(compositeId.salesorderdetailid)(Write.fromPut(Meta.IntMeta.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields) + DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields.structure) } override def insert(unsaved: SalesorderdetailRow): ConnectionIO[SalesorderdetailRow] = { sql"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") @@ -88,7 +88,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { new FragmentOps(sql"""COPY sales.salesorderdetail("salesorderid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "salesorderdetailid", "unitpricediscount", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesorderdetailRowUnsaved.text) } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.read) + SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.read) } override def selectAll: Stream[ConnectionIO, SalesorderdetailRow] = { sql"""select "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text from sales.salesorderdetail""".query(SalesorderdetailRow.read).stream @@ -113,7 +113,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { .map(_ > 0) } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.read) + UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.read) } override def upsert(unsaved: SalesorderdetailRow): ConnectionIO[SalesorderdetailRow] = { sql"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala index 30bac6b1f6..8adbd7672f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala @@ -27,7 +27,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields.structure.fields, map) } override def insert(unsaved: SalesorderdetailRow): ConnectionIO[SalesorderdetailRow] = { delay { @@ -65,7 +65,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale } } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderMock(SalesorderdetailFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesorderdetailFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesorderdetailRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields.structure.fields, map) } override def upsert(unsaved: SalesorderdetailRow): ConnectionIO[SalesorderdetailRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala deleted file mode 100644 index c078344b97..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderdetailStructure[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) - extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] - with SalesorderdetailFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): SalesorderdetailStructure[NewRow] = - new SalesorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala index f1460d2735..51ae860197 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala @@ -21,8 +21,10 @@ import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderheaderFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -51,5 +53,47 @@ trait SalesorderheaderFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheaderFields extends SalesorderheaderStructure[SalesorderheaderRow](None, identity, (_, x) => x) +object SalesorderheaderFields { + val structure: Relation[SalesorderheaderFields, SalesorderheaderRow, SalesorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) + extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] { + + override val fields: SalesorderheaderFields[Row] = new SalesorderheaderFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala index 1684f36714..5683c11b7d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala @@ -39,7 +39,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { sql"""delete from sales.salesorderheader where "salesorderid" = ${fromWrite(salesorderid)(Write.fromPut(SalesorderheaderId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilder("sales.salesorderheader", SalesorderheaderFields) + DeleteBuilder("sales.salesorderheader", SalesorderheaderFields.structure) } override def insert(unsaved: SalesorderheaderRow): ConnectionIO[SalesorderheaderRow] = { sql"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") @@ -128,7 +128,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { new FragmentOps(sql"""COPY sales.salesorderheader("duedate", "shipdate", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "totaldue", "comment", "salesorderid", "revisionnumber", "orderdate", "status", "onlineorderflag", "subtotal", "taxamt", "freight", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesorderheaderRowUnsaved.text) } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.read) + SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.read) } override def selectAll: Stream[ConnectionIO, SalesorderheaderRow] = { sql"""select "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text from sales.salesorderheader""".query(SalesorderheaderRow.read).stream @@ -172,7 +172,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { .map(_ > 0) } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilder("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.read) + UpdateBuilder("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.read) } override def upsert(unsaved: SalesorderheaderRow): ConnectionIO[SalesorderheaderRow] = { sql"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala index 0d00ca41ea..00885e3801 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala @@ -27,7 +27,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale delay(map.remove(salesorderid).isDefined) } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields.structure.fields, map) } override def insert(unsaved: SalesorderheaderRow): ConnectionIO[SalesorderheaderRow] = { delay { @@ -65,7 +65,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale } } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderMock(SalesorderheaderFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesorderheaderFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesorderheaderRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields.structure.fields, map) } override def upsert(unsaved: SalesorderheaderRow): ConnectionIO[SalesorderheaderRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala deleted file mode 100644 index 8e071107e4..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala +++ /dev/null @@ -1,64 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderheaderStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) - extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] - with SalesorderheaderFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): SalesorderheaderStructure[NewRow] = - new SalesorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala index cb32083660..be3ec35703 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesorderheadersalesreasonFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] val salesreasonid: IdField[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheadersalesreasonFields extends SalesorderheadersalesreasonStructure[SalesorderheadersalesreasonRow](None, identity, (_, x) => x) +object SalesorderheadersalesreasonFields { + val structure: Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, SalesorderheadersalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) + extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] { + + override val fields: SalesorderheadersalesreasonFields[Row] = new SalesorderheadersalesreasonFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala index f41bbb5dd3..ef6491300e 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala @@ -28,7 +28,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep sql"""delete from sales.salesorderheadersalesreason where "salesorderid" = ${fromWrite(compositeId.salesorderid)(Write.fromPut(SalesorderheaderId.put))} AND "salesreasonid" = ${fromWrite(compositeId.salesreasonid)(Write.fromPut(SalesreasonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields) + DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure) } override def insert(unsaved: SalesorderheadersalesreasonRow): ConnectionIO[SalesorderheadersalesreasonRow] = { sql"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") @@ -68,7 +68,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep new FragmentOps(sql"""COPY sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesorderheadersalesreasonRowUnsaved.text) } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.read) + SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.read) } override def selectAll: Stream[ConnectionIO, SalesorderheadersalesreasonRow] = { sql"""select "salesorderid", "salesreasonid", "modifieddate"::text from sales.salesorderheadersalesreason""".query(SalesorderheadersalesreasonRow.read).stream @@ -86,7 +86,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep .map(_ > 0) } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.read) + UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.read) } override def upsert(unsaved: SalesorderheadersalesreasonRow): ConnectionIO[SalesorderheadersalesreasonRow] = { sql"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala index 7c56ad8b55..7f53015828 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala @@ -27,7 +27,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesorderheadersalesreasonRow): ConnectionIO[SalesorderheadersalesreasonRow] = { delay { @@ -65,7 +65,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales } } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderMock(SalesorderheadersalesreasonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesorderheadersalesreasonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesorderheadersalesreasonRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales } } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesorderheadersalesreasonRow): ConnectionIO[SalesorderheadersalesreasonRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala deleted file mode 100644 index d463ac686b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheadersalesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesorderheadersalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) - extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] - with SalesorderheadersalesreasonFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): SalesorderheadersalesreasonStructure[NewRow] = - new SalesorderheadersalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala index 8d4bf9c6e2..1152a2fa27 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalespersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -26,5 +28,31 @@ trait SalespersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonFields extends SalespersonStructure[SalespersonRow](None, identity, (_, x) => x) +object SalespersonFields { + val structure: Relation[SalespersonFields, SalespersonRow, SalespersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) + extends Relation[SalespersonFields, SalespersonRow, Row] { + + override val fields: SalespersonFields[Row] = new SalespersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala index 294f6390b2..13cb5cc7e3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala @@ -30,7 +30,7 @@ class SalespersonRepoImpl extends SalespersonRepo { sql"""delete from sales.salesperson where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilder("sales.salesperson", SalespersonFields) + DeleteBuilder("sales.salesperson", SalespersonFields.structure) } override def insert(unsaved: SalespersonRow): ConnectionIO[SalespersonRow] = { sql"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") @@ -91,7 +91,7 @@ class SalespersonRepoImpl extends SalespersonRepo { new FragmentOps(sql"""COPY sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalespersonRowUnsaved.text) } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderSql("sales.salesperson", SalespersonFields, SalespersonRow.read) + SelectBuilderSql("sales.salesperson", SalespersonFields.structure, SalespersonRow.read) } override def selectAll: Stream[ConnectionIO, SalespersonRow] = { sql"""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text from sales.salesperson""".query(SalespersonRow.read).stream @@ -119,7 +119,7 @@ class SalespersonRepoImpl extends SalespersonRepo { .map(_ > 0) } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilder("sales.salesperson", SalespersonFields, SalespersonRow.read) + UpdateBuilder("sales.salesperson", SalespersonFields.structure, SalespersonRow.read) } override def upsert(unsaved: SalespersonRow): ConnectionIO[SalespersonRow] = { sql"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala index 63ed2101c6..b01ead0955 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala @@ -28,7 +28,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonFields.structure.fields, map) } override def insert(unsaved: SalespersonRow): ConnectionIO[SalespersonRow] = { delay { @@ -66,7 +66,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow } } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderMock(SalespersonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalespersonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalespersonRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow } } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonFields.structure.fields, map) } override def upsert(unsaved: SalespersonRow): ConnectionIO[SalespersonRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala deleted file mode 100644 index 91c6def14d..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesperson - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalespersonStructure[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) - extends Relation[SalespersonFields, SalespersonRow, Row] - with SalespersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): SalespersonStructure[NewRow] = - new SalespersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala index 176e9e51e8..6a058db635 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalespersonquotahistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait SalespersonquotahistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonquotahistoryFields extends SalespersonquotahistoryStructure[SalespersonquotahistoryRow](None, identity, (_, x) => x) +object SalespersonquotahistoryFields { + val structure: Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, SalespersonquotahistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) + extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] { + + override val fields: SalespersonquotahistoryFields[Row] = new SalespersonquotahistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala index e6b152fef9..ccc75b4fbc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala @@ -29,7 +29,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { sql"""delete from sales.salespersonquotahistory where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "quotadate" = ${fromWrite(compositeId.quotadate)(Write.fromPut(TypoLocalDateTime.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields) + DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure) } override def insert(unsaved: SalespersonquotahistoryRow): ConnectionIO[SalespersonquotahistoryRow] = { sql"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { new FragmentOps(sql"""COPY sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalespersonquotahistoryRowUnsaved.text) } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.read) + SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.read) } override def selectAll: Stream[ConnectionIO, SalespersonquotahistoryRow] = { sql"""select "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text from sales.salespersonquotahistory""".query(SalespersonquotahistoryRow.read).stream @@ -94,7 +94,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.read) + UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.read) } override def upsert(unsaved: SalespersonquotahistoryRow): ConnectionIO[SalespersonquotahistoryRow] = { sql"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala index 365ce69508..577908947c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala @@ -27,7 +27,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def insert(unsaved: SalespersonquotahistoryRow): ConnectionIO[SalespersonquotahistoryRow] = { delay { @@ -65,7 +65,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo } } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderMock(SalespersonquotahistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalespersonquotahistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalespersonquotahistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo } } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def upsert(unsaved: SalespersonquotahistoryRow): ConnectionIO[SalespersonquotahistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala deleted file mode 100644 index 9a540fa924..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salespersonquotahistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalespersonquotahistoryStructure[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) - extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] - with SalespersonquotahistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): SalespersonquotahistoryStructure[NewRow] = - new SalespersonquotahistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala index daf8632644..f40de30e1f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala @@ -10,7 +10,9 @@ package salesreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesreasonFields[Row] { val salesreasonid: IdField[SalesreasonId, Row] @@ -18,5 +20,26 @@ trait SalesreasonFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesreasonFields extends SalesreasonStructure[SalesreasonRow](None, identity, (_, x) => x) +object SalesreasonFields { + val structure: Relation[SalesreasonFields, SalesreasonRow, SalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) + extends Relation[SalesreasonFields, SalesreasonRow, Row] { + + override val fields: SalesreasonFields[Row] = new SalesreasonFields[Row] { + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala index 53620feea5..ee4b0ea99d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala @@ -27,7 +27,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { sql"""delete from sales.salesreason where "salesreasonid" = ${fromWrite(salesreasonid)(Write.fromPut(SalesreasonId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilder("sales.salesreason", SalesreasonFields) + DeleteBuilder("sales.salesreason", SalesreasonFields.structure) } override def insert(unsaved: SalesreasonRow): ConnectionIO[SalesreasonRow] = { sql"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") @@ -71,7 +71,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { new FragmentOps(sql"""COPY sales.salesreason("name", "reasontype", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesreasonRowUnsaved.text) } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderSql("sales.salesreason", SalesreasonFields, SalesreasonRow.read) + SelectBuilderSql("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.read) } override def selectAll: Stream[ConnectionIO, SalesreasonRow] = { sql"""select "salesreasonid", "name", "reasontype", "modifieddate"::text from sales.salesreason""".query(SalesreasonRow.read).stream @@ -94,7 +94,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { .map(_ > 0) } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilder("sales.salesreason", SalesreasonFields, SalesreasonRow.read) + UpdateBuilder("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.read) } override def upsert(unsaved: SalesreasonRow): ConnectionIO[SalesreasonRow] = { sql"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala index 7e892175c0..8262bea122 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala @@ -27,7 +27,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow delay(map.remove(salesreasonid).isDefined) } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesreasonRow): ConnectionIO[SalesreasonRow] = { delay { @@ -65,7 +65,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow } } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderMock(SalesreasonFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesreasonFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesreasonRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow } } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesreasonRow): ConnectionIO[SalesreasonRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala deleted file mode 100644 index 53f0e42c64..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) - extends Relation[SalesreasonFields, SalesreasonRow, Row] - with SalesreasonFields[Row] { outer => - - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): SalesreasonStructure[NewRow] = - new SalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala index 197f428841..faf31d3876 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalestaxrateFields[Row] { val salestaxrateid: IdField[SalestaxrateId, Row] @@ -24,5 +26,29 @@ trait SalestaxrateFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalestaxrateFields extends SalestaxrateStructure[SalestaxrateRow](None, identity, (_, x) => x) +object SalestaxrateFields { + val structure: Relation[SalestaxrateFields, SalestaxrateRow, SalestaxrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) + extends Relation[SalestaxrateFields, SalestaxrateRow, Row] { + + override val fields: SalestaxrateFields[Row] = new SalestaxrateFields[Row] { + override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala index 044dc3e7d2..22ceb703bc 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala @@ -31,7 +31,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { sql"""delete from sales.salestaxrate where "salestaxrateid" = ${fromWrite(salestaxrateid)(Write.fromPut(SalestaxrateId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilder("sales.salestaxrate", SalestaxrateFields) + DeleteBuilder("sales.salestaxrate", SalestaxrateFields.structure) } override def insert(unsaved: SalestaxrateRow): ConnectionIO[SalestaxrateRow] = { sql"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") @@ -84,7 +84,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { new FragmentOps(sql"""COPY sales.salestaxrate("stateprovinceid", "taxtype", "name", "salestaxrateid", "taxrate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalestaxrateRowUnsaved.text) } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderSql("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.read) + SelectBuilderSql("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.read) } override def selectAll: Stream[ConnectionIO, SalestaxrateRow] = { sql"""select "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text from sales.salestaxrate""".query(SalestaxrateRow.read).stream @@ -110,7 +110,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { .map(_ > 0) } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilder("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.read) + UpdateBuilder("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.read) } override def upsert(unsaved: SalestaxrateRow): ConnectionIO[SalestaxrateRow] = { sql"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala index 1754e82c8d..55cf398004 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala @@ -27,7 +27,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate delay(map.remove(salestaxrateid).isDefined) } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields, map) + DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields.structure.fields, map) } override def insert(unsaved: SalestaxrateRow): ConnectionIO[SalestaxrateRow] = { delay { @@ -65,7 +65,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate } } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderMock(SalestaxrateFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalestaxrateFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalestaxrateRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate } } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields, map) + UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields.structure.fields, map) } override def upsert(unsaved: SalestaxrateRow): ConnectionIO[SalestaxrateRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala deleted file mode 100644 index 116ca9b8e3..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salestaxrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalestaxrateStructure[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) - extends Relation[SalestaxrateFields, SalestaxrateRow, Row] - with SalestaxrateFields[Row] { outer => - - override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): SalestaxrateStructure[NewRow] = - new SalestaxrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala index 79912180ae..7262098e8c 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesterritoryFields[Row] { val territoryid: IdField[SalesterritoryId, Row] @@ -26,5 +28,32 @@ trait SalesterritoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryFields extends SalesterritoryStructure[SalesterritoryRow](None, identity, (_, x) => x) +object SalesterritoryFields { + val structure: Relation[SalesterritoryFields, SalesterritoryRow, SalesterritoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) + extends Relation[SalesterritoryFields, SalesterritoryRow, Row] { + + override val fields: SalesterritoryFields[Row] = new SalesterritoryFields[Row] { + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala index c06571b046..f615455eff 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala @@ -30,7 +30,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { sql"""delete from sales.salesterritory where "territoryid" = ${fromWrite(territoryid)(Write.fromPut(SalesterritoryId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilder("sales.salesterritory", SalesterritoryFields) + DeleteBuilder("sales.salesterritory", SalesterritoryFields.structure) } override def insert(unsaved: SalesterritoryRow): ConnectionIO[SalesterritoryRow] = { sql"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") @@ -95,7 +95,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { new FragmentOps(sql"""COPY sales.salesterritory("name", "countryregioncode", "group", "territoryid", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesterritoryRowUnsaved.text) } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderSql("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.read) + SelectBuilderSql("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.read) } override def selectAll: Stream[ConnectionIO, SalesterritoryRow] = { sql"""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text from sales.salesterritory""".query(SalesterritoryRow.read).stream @@ -124,7 +124,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { .map(_ > 0) } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilder("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.read) + UpdateBuilder("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.read) } override def upsert(unsaved: SalesterritoryRow): ConnectionIO[SalesterritoryRow] = { sql"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala index af8cc591cb..89a41fb398 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala @@ -27,7 +27,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester delay(map.remove(territoryid).isDefined) } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryRow): ConnectionIO[SalesterritoryRow] = { delay { @@ -65,7 +65,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester } } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderMock(SalesterritoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesterritoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesterritoryRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester } } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryRow): ConnectionIO[SalesterritoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala deleted file mode 100644 index 9b43b2d769..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesterritoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) - extends Relation[SalesterritoryFields, SalesterritoryRow, Row] - with SalesterritoryFields[Row] { outer => - - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): SalesterritoryStructure[NewRow] = - new SalesterritoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala index 20865db45f..5e9711c5fb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesterritoryhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -23,5 +25,28 @@ trait SalesterritoryhistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryhistoryFields extends SalesterritoryhistoryStructure[SalesterritoryhistoryRow](None, identity, (_, x) => x) +object SalesterritoryhistoryFields { + val structure: Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, SalesterritoryhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) + extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] { + + override val fields: SalesterritoryhistoryFields[Row] = new SalesterritoryhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala index a8361cd1dd..2734221482 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala @@ -29,7 +29,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { sql"""delete from sales.salesterritoryhistory where "businessentityid" = ${fromWrite(compositeId.businessentityid)(Write.fromPut(BusinessentityId.put))} AND "startdate" = ${fromWrite(compositeId.startdate)(Write.fromPut(TypoLocalDateTime.put))} AND "territoryid" = ${fromWrite(compositeId.territoryid)(Write.fromPut(SalesterritoryId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields) + DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure) } override def insert(unsaved: SalesterritoryhistoryRow): ConnectionIO[SalesterritoryhistoryRow] = { sql"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { new FragmentOps(sql"""COPY sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SalesterritoryhistoryRowUnsaved.text) } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.read) + SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.read) } override def selectAll: Stream[ConnectionIO, SalesterritoryhistoryRow] = { sql"""select "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text from sales.salesterritoryhistory""".query(SalesterritoryhistoryRow.read).stream @@ -95,7 +95,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { .map(_ > 0) } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.read) + UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.read) } override def upsert(unsaved: SalesterritoryhistoryRow): ConnectionIO[SalesterritoryhistoryRow] = { sql"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala index f121ad04c7..428b7cdff8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala @@ -27,7 +27,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryhistoryRow): ConnectionIO[SalesterritoryhistoryRow] = { delay { @@ -65,7 +65,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns } } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderMock(SalesterritoryhistoryFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SalesterritoryhistoryFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SalesterritoryhistoryRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns } } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryhistoryRow): ConnectionIO[SalesterritoryhistoryRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala deleted file mode 100644 index a8d599c781..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritoryhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesterritoryhistoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) - extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] - with SalesterritoryhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): SalesterritoryhistoryStructure[NewRow] = - new SalesterritoryhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala index 74332491f5..af2007ec4a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala @@ -10,7 +10,9 @@ package shoppingcartitem import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShoppingcartitemFields[Row] { val shoppingcartitemid: IdField[ShoppingcartitemId, Row] @@ -20,5 +22,28 @@ trait ShoppingcartitemFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShoppingcartitemFields extends ShoppingcartitemStructure[ShoppingcartitemRow](None, identity, (_, x) => x) +object ShoppingcartitemFields { + val structure: Relation[ShoppingcartitemFields, ShoppingcartitemRow, ShoppingcartitemRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) + extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] { + + override val fields: ShoppingcartitemFields[Row] = new ShoppingcartitemFields[Row] { + override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala index 5fc67e78d9..60e95767ec 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala @@ -28,7 +28,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { sql"""delete from sales.shoppingcartitem where "shoppingcartitemid" = ${fromWrite(shoppingcartitemid)(Write.fromPut(ShoppingcartitemId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields) + DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure) } override def insert(unsaved: ShoppingcartitemRow): ConnectionIO[ShoppingcartitemRow] = { sql"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") @@ -80,7 +80,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { new FragmentOps(sql"""COPY sales.shoppingcartitem("shoppingcartid", "productid", "shoppingcartitemid", "quantity", "datecreated", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(ShoppingcartitemRowUnsaved.text) } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.read) + SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.read) } override def selectAll: Stream[ConnectionIO, ShoppingcartitemRow] = { sql"""select "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text from sales.shoppingcartitem""".query(ShoppingcartitemRow.read).stream @@ -105,7 +105,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { .map(_ > 0) } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.read) + UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.read) } override def upsert(unsaved: ShoppingcartitemRow): ConnectionIO[ShoppingcartitemRow] = { sql"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala index c38c3b80a0..7da9ddce3d 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala @@ -27,7 +27,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop delay(map.remove(shoppingcartitemid).isDefined) } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields, map) + DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields.structure.fields, map) } override def insert(unsaved: ShoppingcartitemRow): ConnectionIO[ShoppingcartitemRow] = { delay { @@ -65,7 +65,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop } } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderMock(ShoppingcartitemFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(ShoppingcartitemFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, ShoppingcartitemRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop } } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields, map) + UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields.structure.fields, map) } override def upsert(unsaved: ShoppingcartitemRow): ConnectionIO[ShoppingcartitemRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala deleted file mode 100644 index d6abe08ac0..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package shoppingcartitem - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShoppingcartitemStructure[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) - extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] - with ShoppingcartitemFields[Row] { outer => - - override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): ShoppingcartitemStructure[NewRow] = - new ShoppingcartitemStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala index 4df6434691..6eb482dbc6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala @@ -10,8 +10,10 @@ package specialoffer import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpecialofferFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -26,5 +28,33 @@ trait SpecialofferFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferFields extends SpecialofferStructure[SpecialofferRow](None, identity, (_, x) => x) +object SpecialofferFields { + val structure: Relation[SpecialofferFields, SpecialofferRow, SpecialofferRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) + extends Relation[SpecialofferFields, SpecialofferRow, Row] { + + override val fields: SpecialofferFields[Row] = new SpecialofferFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala index b57a6d53a8..e8dd96ffd3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala @@ -28,7 +28,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { sql"""delete from sales.specialoffer where "specialofferid" = ${fromWrite(specialofferid)(Write.fromPut(SpecialofferId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilder("sales.specialoffer", SpecialofferFields) + DeleteBuilder("sales.specialoffer", SpecialofferFields.structure) } override def insert(unsaved: SpecialofferRow): ConnectionIO[SpecialofferRow] = { sql"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") @@ -88,7 +88,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { new FragmentOps(sql"""COPY sales.specialoffer("description", "type", "category", "startdate", "enddate", "maxqty", "specialofferid", "discountpct", "minqty", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SpecialofferRowUnsaved.text) } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderSql("sales.specialoffer", SpecialofferFields, SpecialofferRow.read) + SelectBuilderSql("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.read) } override def selectAll: Stream[ConnectionIO, SpecialofferRow] = { sql"""select "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text from sales.specialoffer""".query(SpecialofferRow.read).stream @@ -118,7 +118,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { .map(_ > 0) } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilder("sales.specialoffer", SpecialofferFields, SpecialofferRow.read) + UpdateBuilder("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.read) } override def upsert(unsaved: SpecialofferRow): ConnectionIO[SpecialofferRow] = { sql"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala index 6e506f413d..4c847297b8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala @@ -27,7 +27,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer delay(map.remove(specialofferid).isDefined) } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferFields.structure.fields, map) } override def insert(unsaved: SpecialofferRow): ConnectionIO[SpecialofferRow] = { delay { @@ -65,7 +65,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer } } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderMock(SpecialofferFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SpecialofferFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SpecialofferRow] = { Stream.emits(map.values.toList) @@ -88,7 +88,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer } } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferFields.structure.fields, map) } override def upsert(unsaved: SpecialofferRow): ConnectionIO[SpecialofferRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala deleted file mode 100644 index d642590d55..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialoffer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpecialofferStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) - extends Relation[SpecialofferFields, SpecialofferRow, Row] - with SpecialofferFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): SpecialofferStructure[NewRow] = - new SpecialofferStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala index 76e69fd6ee..c6c2055c28 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SpecialofferproductFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -20,5 +22,26 @@ trait SpecialofferproductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferproductFields extends SpecialofferproductStructure[SpecialofferproductRow](None, identity, (_, x) => x) +object SpecialofferproductFields { + val structure: Relation[SpecialofferproductFields, SpecialofferproductRow, SpecialofferproductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) + extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] { + + override val fields: SpecialofferproductFields[Row] = new SpecialofferproductFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala index 9a5205fef9..4801c790ec 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala @@ -29,7 +29,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { sql"""delete from sales.specialofferproduct where "specialofferid" = ${fromWrite(compositeId.specialofferid)(Write.fromPut(SpecialofferId.put))} AND "productid" = ${fromWrite(compositeId.productid)(Write.fromPut(ProductId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields) + DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields.structure) } override def insert(unsaved: SpecialofferproductRow): ConnectionIO[SpecialofferproductRow] = { sql"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") @@ -73,7 +73,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { new FragmentOps(sql"""COPY sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(SpecialofferproductRowUnsaved.text) } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.read) + SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.read) } override def selectAll: Stream[ConnectionIO, SpecialofferproductRow] = { sql"""select "specialofferid", "productid", "rowguid", "modifieddate"::text from sales.specialofferproduct""".query(SpecialofferproductRow.read).stream @@ -92,7 +92,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { .map(_ > 0) } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.read) + UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.read) } override def upsert(unsaved: SpecialofferproductRow): ConnectionIO[SpecialofferproductRow] = { sql"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala index ffdea39f61..84c1ac43bb 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala @@ -27,7 +27,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved delay(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields.structure.fields, map) } override def insert(unsaved: SpecialofferproductRow): ConnectionIO[SpecialofferproductRow] = { delay { @@ -65,7 +65,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved } } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderMock(SpecialofferproductFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(SpecialofferproductFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, SpecialofferproductRow] = { Stream.emits(map.values.toList) @@ -85,7 +85,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved } } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields.structure.fields, map) } override def upsert(unsaved: SpecialofferproductRow): ConnectionIO[SpecialofferproductRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala deleted file mode 100644 index 4acd01c6bb..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialofferproduct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SpecialofferproductStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) - extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] - with SpecialofferproductFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): SpecialofferproductStructure[NewRow] = - new SpecialofferproductStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala index f5e0398065..2164840a07 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala @@ -13,8 +13,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait StoreFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait StoreFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StoreFields extends StoreStructure[StoreRow](None, identity, (_, x) => x) +object StoreFields { + val structure: Relation[StoreFields, StoreRow, StoreRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) + extends Relation[StoreFields, StoreRow, Row] { + + override val fields: StoreFields[Row] = new StoreFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala index 918d189418..450d361f8f 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala @@ -30,7 +30,7 @@ class StoreRepoImpl extends StoreRepo { sql"""delete from sales.store where "businessentityid" = ${fromWrite(businessentityid)(Write.fromPut(BusinessentityId.put))}""".update.run.map(_ > 0) } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilder("sales.store", StoreFields) + DeleteBuilder("sales.store", StoreFields.structure) } override def insert(unsaved: StoreRow): ConnectionIO[StoreRow] = { sql"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") @@ -76,7 +76,7 @@ class StoreRepoImpl extends StoreRepo { new FragmentOps(sql"""COPY sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""").copyIn(unsaved, batchSize)(StoreRowUnsaved.text) } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderSql("sales.store", StoreFields, StoreRow.read) + SelectBuilderSql("sales.store", StoreFields.structure, StoreRow.read) } override def selectAll: Stream[ConnectionIO, StoreRow] = { sql"""select "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text from sales.store""".query(StoreRow.read).stream @@ -101,7 +101,7 @@ class StoreRepoImpl extends StoreRepo { .map(_ > 0) } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilder("sales.store", StoreFields, StoreRow.read) + UpdateBuilder("sales.store", StoreFields.structure, StoreRow.read) } override def upsert(unsaved: StoreRow): ConnectionIO[StoreRow] = { sql"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala index b46247003f..2c0dc39617 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala @@ -28,7 +28,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], delay(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilderMock(DeleteParams.empty, StoreFields, map) + DeleteBuilderMock(DeleteParams.empty, StoreFields.structure.fields, map) } override def insert(unsaved: StoreRow): ConnectionIO[StoreRow] = { delay { @@ -66,7 +66,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], } } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderMock(StoreFields, delay(map.values.toList), SelectParams.empty) + SelectBuilderMock(StoreFields.structure, delay(map.values.toList), SelectParams.empty) } override def selectAll: Stream[ConnectionIO, StoreRow] = { Stream.emits(map.values.toList) @@ -89,7 +89,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], } } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilderMock(UpdateParams.empty, StoreFields, map) + UpdateBuilderMock(UpdateParams.empty, StoreFields.structure.fields, map) } override def upsert(unsaved: StoreRow): ConnectionIO[StoreRow] = { delay { diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala deleted file mode 100644 index 45fddb7785..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package store - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class StoreStructure[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) - extends Relation[StoreFields, StoreRow, Row] - with StoreFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): StoreStructure[NewRow] = - new StoreStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala index 6476a979fa..8217897f26 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VindividualcustomerViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VindividualcustomerViewFields[Row] { val countryregionname: Field[Name, Row] val demographics: OptField[TypoXml, Row] } -object VindividualcustomerViewFields extends VindividualcustomerViewStructure[VindividualcustomerViewRow](None, identity, (_, x) => x) +object VindividualcustomerViewFields { + val structure: Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, VindividualcustomerViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) + extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] { + + override val fields: VindividualcustomerViewFields[Row] = new VindividualcustomerViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.demographics) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala index 422b9477ac..f2cf1629a8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VindividualcustomerViewRepoImpl extends VindividualcustomerViewRepo { override def select: SelectBuilder[VindividualcustomerViewFields, VindividualcustomerViewRow] = { - SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields, VindividualcustomerViewRow.read) + SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields.structure, VindividualcustomerViewRow.read) } override def selectAll: Stream[ConnectionIO, VindividualcustomerViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "demographics" from sales.vindividualcustomer""".query(VindividualcustomerViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala deleted file mode 100644 index 66a9abfd80..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vindividualcustomer - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VindividualcustomerViewStructure[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) - extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] - with VindividualcustomerViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, demographics) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): VindividualcustomerViewStructure[NewRow] = - new VindividualcustomerViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala index 65ad2184a6..b13a6ac7a8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDate import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VpersondemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,35 @@ trait VpersondemographicsViewFields[Row] { val homeownerflag: OptField[Boolean, Row] val numbercarsowned: OptField[Int, Row] } -object VpersondemographicsViewFields extends VpersondemographicsViewStructure[VpersondemographicsViewRow](None, identity, (_, x) => x) +object VpersondemographicsViewFields { + val structure: Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, VpersondemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) + extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] { + + override val fields: VpersondemographicsViewFields[Row] = new VpersondemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) + override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) + override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) + override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) + override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) + override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) + override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) + override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) + override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.totalpurchaseytd, fields.datefirstpurchase, fields.birthdate, fields.maritalstatus, fields.yearlyincome, fields.gender, fields.totalchildren, fields.numberchildrenathome, fields.education, fields.occupation, fields.homeownerflag, fields.numbercarsowned) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala index b49ce9b069..2facfa9d99 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VpersondemographicsViewRepoImpl extends VpersondemographicsViewRepo { override def select: SelectBuilder[VpersondemographicsViewFields, VpersondemographicsViewRow] = { - SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields, VpersondemographicsViewRow.read) + SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields.structure, VpersondemographicsViewRow.read) } override def selectAll: Stream[ConnectionIO, VpersondemographicsViewRow] = { sql"""select "businessentityid", "totalpurchaseytd"::numeric, "datefirstpurchase"::text, "birthdate"::text, "maritalstatus", "yearlyincome", "gender", "totalchildren", "numberchildrenathome", "education", "occupation", "homeownerflag", "numbercarsowned" from sales.vpersondemographics""".query(VpersondemographicsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala deleted file mode 100644 index 738b9fdca2..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vpersondemographics - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VpersondemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) - extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] - with VpersondemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) - override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) - override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) - override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) - override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) - override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) - override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) - override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) - override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, totalpurchaseytd, datefirstpurchase, birthdate, maritalstatus, yearlyincome, gender, totalchildren, numberchildrenathome, education, occupation, homeownerflag, numbercarsowned) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): VpersondemographicsViewStructure[NewRow] = - new VpersondemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala index 4d1274938b..11e54139fd 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -38,5 +40,44 @@ trait VsalespersonViewFields[Row] { val salesytd: Field[BigDecimal, Row] val saleslastyear: Field[BigDecimal, Row] } -object VsalespersonViewFields extends VsalespersonViewStructure[VsalespersonViewRow](None, identity, (_, x) => x) +object VsalespersonViewFields { + val structure: Relation[VsalespersonViewFields, VsalespersonViewRow, VsalespersonViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) + extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] { + + override val fields: VsalespersonViewFields[Row] = new VsalespersonViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) + override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.territoryname, fields.territorygroup, fields.salesquota, fields.salesytd, fields.saleslastyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala index 3e8022cb06..a6e71d3ad3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonViewRepoImpl extends VsalespersonViewRepo { override def select: SelectBuilder[VsalespersonViewFields, VsalespersonViewRow] = { - SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields, VsalespersonViewRow.read) + SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields.structure, VsalespersonViewRow.read) } override def selectAll: Stream[ConnectionIO, VsalespersonViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "territoryname", "territorygroup", "salesquota", "salesytd", "saleslastyear" from sales.vsalesperson""".query(VsalespersonViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala deleted file mode 100644 index 7af84b60ed..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala +++ /dev/null @@ -1,51 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalesperson - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) - extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] - with VsalespersonViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) - override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, territoryname, territorygroup, salesquota, salesytd, saleslastyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): VsalespersonViewStructure[NewRow] = - new VsalespersonViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala index 2eb635438a..f636046ef3 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala @@ -7,7 +7,9 @@ package adventureworks package sales package vsalespersonsalesbyfiscalyears +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val SalesPersonID: OptField[Int, Row] @@ -18,5 +20,29 @@ trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val `2013`: OptField[BigDecimal, Row] val `2014`: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsViewFields extends VsalespersonsalesbyfiscalyearsViewStructure[VsalespersonsalesbyfiscalyearsViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, VsalespersonsalesbyfiscalyearsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsViewFields[Row] = new VsalespersonsalesbyfiscalyearsViewFields[Row] { + override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) + override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) + override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) + override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) + override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) + override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) + override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.SalesPersonID, fields.FullName, fields.JobTitle, fields.SalesTerritory, fields.`2012`, fields.`2013`, fields.`2014`) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala index f6a7cc1024..82ec0a6fe2 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonsalesbyfiscalyearsViewRepoImpl extends VsalespersonsalesbyfiscalyearsViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow.read) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields.structure, VsalespersonsalesbyfiscalyearsViewRow.read) } override def selectAll: Stream[ConnectionIO, VsalespersonsalesbyfiscalyearsViewRow] = { sql"""select "SalesPersonID", "FullName", "JobTitle", "SalesTerritory", "2012", "2013", "2014" from sales.vsalespersonsalesbyfiscalyears""".query(VsalespersonsalesbyfiscalyearsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala deleted file mode 100644 index 3485f8108f..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyears - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] - with VsalespersonsalesbyfiscalyearsViewFields[Row] { outer => - - override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) - override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) - override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) - override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) - override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) - override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) - override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](SalesPersonID, FullName, JobTitle, SalesTerritory, `2012`, `2013`, `2014`) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): VsalespersonsalesbyfiscalyearsViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala index c871064e8e..491bd9b9f7 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala @@ -10,7 +10,9 @@ package vsalespersonsalesbyfiscalyearsdata import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salespersonid: OptField[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salestotal: OptField[BigDecimal, Row] val fiscalyear: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsdataViewFields extends VsalespersonsalesbyfiscalyearsdataViewStructure[VsalespersonsalesbyfiscalyearsdataViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsdataViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, VsalespersonsalesbyfiscalyearsdataViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsdataViewFields[Row] = new VsalespersonsalesbyfiscalyearsdataViewFields[Row] { + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) + override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) + override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salespersonid, fields.fullname, fields.jobtitle, fields.salesterritory, fields.salestotal, fields.fiscalyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala index 325431a699..7e5cb4ea89 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VsalespersonsalesbyfiscalyearsdataViewRepoImpl extends VsalespersonsalesbyfiscalyearsdataViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow.read) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields.structure, VsalespersonsalesbyfiscalyearsdataViewRow.read) } override def selectAll: Stream[ConnectionIO, VsalespersonsalesbyfiscalyearsdataViewRow] = { sql"""select "salespersonid", "fullname", "jobtitle", "salesterritory", "salestotal", "fiscalyear" from sales.vsalespersonsalesbyfiscalyearsdata""".query(VsalespersonsalesbyfiscalyearsdataViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala deleted file mode 100644 index 98db3bcd8b..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyearsdata - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsdataViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] - with VsalespersonsalesbyfiscalyearsdataViewFields[Row] { outer => - - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) - override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) - override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salespersonid, fullname, jobtitle, salesterritory, salestotal, fiscalyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): VsalespersonsalesbyfiscalyearsdataViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsdataViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala index 5b34fb540b..cf260014a4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vstorewithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VstorewithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VstorewithaddressesViewFields extends VstorewithaddressesViewStructure[VstorewithaddressesViewRow](None, identity, (_, x) => x) +object VstorewithaddressesViewFields { + val structure: Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, VstorewithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) + extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] { + + override val fields: VstorewithaddressesViewFields[Row] = new VstorewithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala index a6d74cc9dd..ebbc28d0c8 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VstorewithaddressesViewRepoImpl extends VstorewithaddressesViewRepo { override def select: SelectBuilder[VstorewithaddressesViewFields, VstorewithaddressesViewRow] = { - SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields, VstorewithaddressesViewRow.read) + SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields.structure, VstorewithaddressesViewRow.read) } override def selectAll: Stream[ConnectionIO, VstorewithaddressesViewRow] = { sql"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" from sales.vstorewithaddresses""".query(VstorewithaddressesViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala deleted file mode 100644 index 54c832e3d4..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) - extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] - with VstorewithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): VstorewithaddressesViewStructure[NewRow] = - new VstorewithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala index 39b7c010bf..9a27788ee6 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VstorewithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VstorewithcontactsViewFields extends VstorewithcontactsViewStructure[VstorewithcontactsViewRow](None, identity, (_, x) => x) +object VstorewithcontactsViewFields { + val structure: Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, VstorewithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) + extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] { + + override val fields: VstorewithcontactsViewFields[Row] = new VstorewithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala index 6685de37f8..b937ba1fe4 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VstorewithcontactsViewRepoImpl extends VstorewithcontactsViewRepo { override def select: SelectBuilder[VstorewithcontactsViewFields, VstorewithcontactsViewRow] = { - SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields, VstorewithcontactsViewRow.read) + SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields.structure, VstorewithcontactsViewRow.read) } override def selectAll: Stream[ConnectionIO, VstorewithcontactsViewRow] = { sql"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" from sales.vstorewithcontacts""".query(VstorewithcontactsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala deleted file mode 100644 index 0e2624e4a4..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) - extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] - with VstorewithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): VstorewithcontactsViewStructure[NewRow] = - new VstorewithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala index c3d98a97b6..ca48f53127 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithdemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,34 @@ trait VstorewithdemographicsViewFields[Row] { val Internet: OptField[/* max 30 chars */ String, Row] val NumberEmployees: OptField[Int, Row] } -object VstorewithdemographicsViewFields extends VstorewithdemographicsViewStructure[VstorewithdemographicsViewRow](None, identity, (_, x) => x) +object VstorewithdemographicsViewFields { + val structure: Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, VstorewithdemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) + extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] { + + override val fields: VstorewithdemographicsViewFields[Row] = new VstorewithdemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) + override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) + override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) + override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) + override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) + override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) + override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) + override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) + override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) + override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.AnnualSales, fields.AnnualRevenue, fields.BankName, fields.BusinessType, fields.YearOpened, fields.Specialty, fields.SquareFeet, fields.Brands, fields.Internet, fields.NumberEmployees) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala index 58e9f8fcc4..ed65a98b8a 100644 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala +++ b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala @@ -15,7 +15,7 @@ import typo.dsl.SelectBuilderSql class VstorewithdemographicsViewRepoImpl extends VstorewithdemographicsViewRepo { override def select: SelectBuilder[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow] = { - SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields, VstorewithdemographicsViewRow.read) + SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields.structure, VstorewithdemographicsViewRow.read) } override def selectAll: Stream[ConnectionIO, VstorewithdemographicsViewRow] = { sql"""select "businessentityid", "name", "AnnualSales"::numeric, "AnnualRevenue"::numeric, "BankName", "BusinessType", "YearOpened", "Specialty", "SquareFeet", "Brands", "Internet", "NumberEmployees" from sales.vstorewithdemographics""".query(VstorewithdemographicsViewRow.read).stream diff --git a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala b/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala deleted file mode 100644 index e9b17f1121..0000000000 --- a/typo-tester-doobie/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithdemographics - -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithdemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) - extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] - with VstorewithdemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) - override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) - override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) - override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) - override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) - override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) - override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) - override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) - override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) - override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, AnnualSales, AnnualRevenue, BankName, BusinessType, YearOpened, Specialty, SquareFeet, Brands, Internet, NumberEmployees) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): VstorewithdemographicsViewStructure[NewRow] = - new VstorewithdemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala index 720ed330a1..9cb3325aa1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.department.DepartmentId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait DViewFields[Row] { val id: Field[DepartmentId, Row] @@ -19,5 +21,27 @@ trait DViewFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala index ac27781432..e3f9fb78bc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("hr.d", DViewFields, DViewRow.jdbcDecoder) + SelectBuilderSql("hr.d", DViewFields.structure, DViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, DViewRow] = { sql"""select "id", "departmentid", "name", "groupname", "modifieddate"::text from hr.d""".query(DViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala deleted file mode 100644 index ab458605c8..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/d/DViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package d - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val id = new Field[DepartmentId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala index 9557d3f03a..1d5e36b1af 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -34,5 +36,38 @@ trait EViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala index 4178d555ca..7ccdf89a2e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("hr.e", EViewFields, EViewRow.jdbcDecoder) + SelectBuilderSql("hr.e", EViewFields.structure, EViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EViewRow] = { sql"""select "id", "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" from hr.e""".query(EViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala deleted file mode 100644 index 2a50379009..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/e/EViewStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package e - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), None)(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, None)(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, None)(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, None)(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, None)(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala index 057cb8089a..d9fbd5167d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EdhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait EdhViewFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EdhViewFields extends EdhViewStructure[EdhViewRow](None, identity, (_, x) => x) +object EdhViewFields { + val structure: Relation[EdhViewFields, EdhViewRow, EdhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) + extends Relation[EdhViewFields, EdhViewRow, Row] { + + override val fields: EdhViewFields[Row] = new EdhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala index 7b6f443d61..851fff8ae1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class EdhViewRepoImpl extends EdhViewRepo { override def select: SelectBuilder[EdhViewFields, EdhViewRow] = { - SelectBuilderSql("hr.edh", EdhViewFields, EdhViewRow.jdbcDecoder) + SelectBuilderSql("hr.edh", EdhViewFields.structure, EdhViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EdhViewRow] = { sql"""select "id", "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text from hr.edh""".query(EdhViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala deleted file mode 100644 index 4ea9c21a49..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/edh/EdhViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package edh - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EdhViewStructure[Row](val prefix: Option[String], val extract: Row => EdhViewRow, val merge: (Row, EdhViewRow) => Row) - extends Relation[EdhViewFields, EdhViewRow, Row] - with EdhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new Field[DepartmentId, Row](prefix, "departmentid", None, None)(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EdhViewRow, merge: (NewRow, EdhViewRow) => NewRow): EdhViewStructure[NewRow] = - new EdhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala index 048512420d..c8670a7fe5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait EphViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait EphViewFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EphViewFields extends EphViewStructure[EphViewRow](None, identity, (_, x) => x) +object EphViewFields { + val structure: Relation[EphViewFields, EphViewRow, EphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) + extends Relation[EphViewFields, EphViewRow, Row] { + + override val fields: EphViewFields[Row] = new EphViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala index bf09aea91a..9d22332fc9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class EphViewRepoImpl extends EphViewRepo { override def select: SelectBuilder[EphViewFields, EphViewRow] = { - SelectBuilderSql("hr.eph", EphViewFields, EphViewRow.jdbcDecoder) + SelectBuilderSql("hr.eph", EphViewFields.structure, EphViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EphViewRow] = { sql"""select "id", "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text from hr.eph""".query(EphViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala deleted file mode 100644 index 729f28f6bb..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/eph/EphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package eph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class EphViewStructure[Row](val prefix: Option[String], val extract: Row => EphViewRow, val merge: (Row, EphViewRow) => Row) - extends Relation[EphViewFields, EphViewRow, Row] - with EphViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new Field[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), None)(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, None)(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, None)(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EphViewRow, merge: (NewRow, EphViewRow) => NewRow): EphViewStructure[NewRow] = - new EphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala index 1403c7be19..0fdb335f9b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JcViewFields[Row] { val id: Field[JobcandidateId, Row] @@ -21,5 +23,27 @@ trait JcViewFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JcViewFields extends JcViewStructure[JcViewRow](None, identity, (_, x) => x) +object JcViewFields { + val structure: Relation[JcViewFields, JcViewRow, JcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) + extends Relation[JcViewFields, JcViewRow, Row] { + + override val fields: JcViewFields[Row] = new JcViewFields[Row] { + override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala index 1c854958c8..4fa9e8ecf4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class JcViewRepoImpl extends JcViewRepo { override def select: SelectBuilder[JcViewFields, JcViewRow] = { - SelectBuilderSql("hr.jc", JcViewFields, JcViewRow.jdbcDecoder) + SelectBuilderSql("hr.jc", JcViewFields.structure, JcViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, JcViewRow] = { sql"""select "id", "jobcandidateid", "businessentityid", "resume", "modifieddate"::text from hr.jc""".query(JcViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala deleted file mode 100644 index fa1d098dfb..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/jc/JcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package jc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JcViewStructure[Row](val prefix: Option[String], val extract: Row => JcViewRow, val merge: (Row, JcViewRow) => Row) - extends Relation[JcViewFields, JcViewRow, Row] - with JcViewFields[Row] { outer => - - override val id = new Field[JobcandidateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, None)(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JcViewRow, merge: (NewRow, JcViewRow) => NewRow): JcViewStructure[NewRow] = - new JcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala index e163d56da1..8fc6d1f010 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoLocalTime import adventureworks.humanresources.shift.ShiftId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[ShiftId, Row] @@ -21,5 +23,28 @@ trait SViewFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala index 0a0665e202..9c1300d4e4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("hr.s", SViewFields, SViewRow.jdbcDecoder) + SelectBuilderSql("hr.s", SViewFields.structure, SViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SViewRow] = { sql"""select "id", "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text from hr.s""".query(SViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala deleted file mode 100644 index e3a4cd57a3..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/hr/s/SViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package hr -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.humanresources.shift.ShiftId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[ShiftId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shiftid = new Field[ShiftId, Row](prefix, "shiftid", None, None)(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), None)(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), None)(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala index d5c56ff6f0..910a3a1b0c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentFields.scala @@ -10,7 +10,9 @@ package department import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait DepartmentFields[Row] { val departmentid: IdField[DepartmentId, Row] @@ -18,5 +20,26 @@ trait DepartmentFields[Row] { val groupname: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object DepartmentFields extends DepartmentStructure[DepartmentRow](None, identity, (_, x) => x) +object DepartmentFields { + val structure: Relation[DepartmentFields, DepartmentRow, DepartmentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) + extends Relation[DepartmentFields, DepartmentRow, Row] { + + override val fields: DepartmentFields[Row] = new DepartmentFields[Row] { + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.departmentid, fields.name, fields.groupname, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala index a6ba7e6372..bf59bf4a59 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoImpl.scala @@ -28,7 +28,7 @@ class DepartmentRepoImpl extends DepartmentRepo { sql"""delete from humanresources.department where "departmentid" = ${Segment.paramSegment(departmentid)(DepartmentId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilder("humanresources.department", DepartmentFields) + DeleteBuilder("humanresources.department", DepartmentFields.structure) } override def insert(unsaved: DepartmentRow): ZIO[ZConnection, Throwable, DepartmentRow] = { sql"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") @@ -70,7 +70,7 @@ class DepartmentRepoImpl extends DepartmentRepo { streamingInsert(s"""COPY humanresources.department("name", "groupname", "departmentid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(DepartmentRowUnsaved.text) } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderSql("humanresources.department", DepartmentFields, DepartmentRow.jdbcDecoder) + SelectBuilderSql("humanresources.department", DepartmentFields.structure, DepartmentRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, DepartmentRow] = { sql"""select "departmentid", "name", "groupname", "modifieddate"::text from humanresources.department""".query(DepartmentRow.jdbcDecoder).selectStream @@ -90,7 +90,7 @@ class DepartmentRepoImpl extends DepartmentRepo { where "departmentid" = ${Segment.paramSegment(departmentid)(DepartmentId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilder("humanresources.department", DepartmentFields, DepartmentRow.jdbcDecoder) + UpdateBuilder("humanresources.department", DepartmentFields.structure, DepartmentRow.jdbcDecoder) } override def upsert(unsaved: DepartmentRow): ZIO[ZConnection, Throwable, UpdateResult[DepartmentRow]] = { sql"""insert into humanresources.department("departmentid", "name", "groupname", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala index d6ca5d82d4..1a42e44e76 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentRepoMock.scala @@ -29,7 +29,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], ZIO.succeed(map.remove(departmentid).isDefined) } override def delete: DeleteBuilder[DepartmentFields, DepartmentRow] = { - DeleteBuilderMock(DeleteParams.empty, DepartmentFields, map) + DeleteBuilderMock(DeleteParams.empty, DepartmentFields.structure.fields, map) } override def insert(unsaved: DepartmentRow): ZIO[ZConnection, Throwable, DepartmentRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[DepartmentFields, DepartmentRow] = { - SelectBuilderMock(DepartmentFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(DepartmentFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, DepartmentRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class DepartmentRepoMock(toRow: Function1[DepartmentRowUnsaved, DepartmentRow], } } override def update: UpdateBuilder[DepartmentFields, DepartmentRow] = { - UpdateBuilderMock(UpdateParams.empty, DepartmentFields, map) + UpdateBuilderMock(UpdateParams.empty, DepartmentFields.structure.fields, map) } override def upsert(unsaved: DepartmentRow): ZIO[ZConnection, Throwable, UpdateResult[DepartmentRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala deleted file mode 100644 index 50ec794eff..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/department/DepartmentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package department - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class DepartmentStructure[Row](val prefix: Option[String], val extract: Row => DepartmentRow, val merge: (Row, DepartmentRow) => Row) - extends Relation[DepartmentFields, DepartmentRow, Row] - with DepartmentFields[Row] { outer => - - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int4"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, Some("varchar"))(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](departmentid, name, groupname, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DepartmentRow, merge: (NewRow, DepartmentRow) => NewRow): DepartmentStructure[NewRow] = - new DepartmentStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala index 95087474b4..0547baa076 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeeFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -34,5 +36,37 @@ trait EmployeeFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val organizationnode: OptField[String, Row] } -object EmployeeFields extends EmployeeStructure[EmployeeRow](None, identity, (_, x) => x) +object EmployeeFields { + val structure: Relation[EmployeeFields, EmployeeRow, EmployeeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) + extends Relation[EmployeeFields, EmployeeRow, Row] { + + override val fields: EmployeeFields[Row] = new EmployeeFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) + override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) + override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) + override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) + override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) + override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.nationalidnumber, fields.loginid, fields.jobtitle, fields.birthdate, fields.maritalstatus, fields.gender, fields.hiredate, fields.salariedflag, fields.vacationhours, fields.sickleavehours, fields.currentflag, fields.rowguid, fields.modifieddate, fields.organizationnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala index 73a6497497..a09bef955e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoImpl.scala @@ -33,7 +33,7 @@ class EmployeeRepoImpl extends EmployeeRepo { sql"""delete from humanresources.employee where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilder("humanresources.employee", EmployeeFields) + DeleteBuilder("humanresources.employee", EmployeeFields.structure) } override def insert(unsaved: EmployeeRow): ZIO[ZConnection, Throwable, EmployeeRow] = { sql"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") @@ -101,7 +101,7 @@ class EmployeeRepoImpl extends EmployeeRepo { streamingInsert(s"""COPY humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeeRowUnsaved.text) } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderSql("humanresources.employee", EmployeeFields, EmployeeRow.jdbcDecoder) + SelectBuilderSql("humanresources.employee", EmployeeFields.structure, EmployeeRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EmployeeRow] = { sql"""select "businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate"::text, "maritalstatus", "gender", "hiredate"::text, "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate"::text, "organizationnode" from humanresources.employee""".query(EmployeeRow.jdbcDecoder).selectStream @@ -132,7 +132,7 @@ class EmployeeRepoImpl extends EmployeeRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilder("humanresources.employee", EmployeeFields, EmployeeRow.jdbcDecoder) + UpdateBuilder("humanresources.employee", EmployeeFields.structure, EmployeeRow.jdbcDecoder) } override def upsert(unsaved: EmployeeRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeeRow]] = { sql"""insert into humanresources.employee("businessentityid", "nationalidnumber", "loginid", "jobtitle", "birthdate", "maritalstatus", "gender", "hiredate", "salariedflag", "vacationhours", "sickleavehours", "currentflag", "rowguid", "modifieddate", "organizationnode") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala index 0ffe23a290..24a55dd5b9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeRepoMock.scala @@ -30,7 +30,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[EmployeeFields, EmployeeRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeeFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeeFields.structure.fields, map) } override def insert(unsaved: EmployeeRow): ZIO[ZConnection, Throwable, EmployeeRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[EmployeeFields, EmployeeRow] = { - SelectBuilderMock(EmployeeFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(EmployeeFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, EmployeeRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class EmployeeRepoMock(toRow: Function1[EmployeeRowUnsaved, EmployeeRow], } } override def update: UpdateBuilder[EmployeeFields, EmployeeRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeeFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeeFields.structure.fields, map) } override def upsert(unsaved: EmployeeRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeeRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala deleted file mode 100644 index 2193c5da6e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employee/EmployeeStructure.scala +++ /dev/null @@ -1,47 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employee - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeeStructure[Row](val prefix: Option[String], val extract: Row => EmployeeRow, val merge: (Row, EmployeeRow) => Row) - extends Relation[EmployeeFields, EmployeeRow, Row] - with EmployeeFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val nationalidnumber = new Field[/* max 15 chars */ String, Row](prefix, "nationalidnumber", None, None)(x => extract(x).nationalidnumber, (row, value) => merge(row, extract(row).copy(nationalidnumber = value))) - override val loginid = new Field[/* max 256 chars */ String, Row](prefix, "loginid", None, None)(x => extract(x).loginid, (row, value) => merge(row, extract(row).copy(loginid = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val birthdate = new Field[TypoLocalDate, Row](prefix, "birthdate", Some("text"), Some("date"))(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "maritalstatus", None, Some("bpchar"))(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val gender = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "gender", None, Some("bpchar"))(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val hiredate = new Field[TypoLocalDate, Row](prefix, "hiredate", Some("text"), Some("date"))(x => extract(x).hiredate, (row, value) => merge(row, extract(row).copy(hiredate = value))) - override val salariedflag = new Field[Flag, Row](prefix, "salariedflag", None, Some("bool"))(x => extract(x).salariedflag, (row, value) => merge(row, extract(row).copy(salariedflag = value))) - override val vacationhours = new Field[TypoShort, Row](prefix, "vacationhours", None, Some("int2"))(x => extract(x).vacationhours, (row, value) => merge(row, extract(row).copy(vacationhours = value))) - override val sickleavehours = new Field[TypoShort, Row](prefix, "sickleavehours", None, Some("int2"))(x => extract(x).sickleavehours, (row, value) => merge(row, extract(row).copy(sickleavehours = value))) - override val currentflag = new Field[Flag, Row](prefix, "currentflag", None, Some("bool"))(x => extract(x).currentflag, (row, value) => merge(row, extract(row).copy(currentflag = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val organizationnode = new OptField[String, Row](prefix, "organizationnode", None, None)(x => extract(x).organizationnode, (row, value) => merge(row, extract(row).copy(organizationnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, nationalidnumber, loginid, jobtitle, birthdate, maritalstatus, gender, hiredate, salariedflag, vacationhours, sickleavehours, currentflag, rowguid, modifieddate, organizationnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeeRow, merge: (NewRow, EmployeeRow) => NewRow): EmployeeStructure[NewRow] = - new EmployeeStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala index e3dd76934a..2a822b24e7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryFields.scala @@ -13,8 +13,10 @@ import adventureworks.humanresources.department.DepartmentId import adventureworks.humanresources.shift.ShiftId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmployeedepartmenthistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait EmployeedepartmenthistoryFields[Row] { val enddate: OptField[TypoLocalDate, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeedepartmenthistoryFields extends EmployeedepartmenthistoryStructure[EmployeedepartmenthistoryRow](None, identity, (_, x) => x) +object EmployeedepartmenthistoryFields { + val structure: Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, EmployeedepartmenthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) + extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] { + + override val fields: EmployeedepartmenthistoryFields[Row] = new EmployeedepartmenthistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.departmentid, fields.shiftid, fields.startdate, fields.enddate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala index fabeb8b6fb..f259375e1e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoImpl.scala @@ -32,7 +32,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { sql"""delete from humanresources.employeedepartmenthistory where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDate.setter)} AND "departmentid" = ${Segment.paramSegment(compositeId.departmentid)(DepartmentId.setter)} AND "shiftid" = ${Segment.paramSegment(compositeId.shiftid)(ShiftId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields) + DeleteBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure) } override def insert(unsaved: EmployeedepartmenthistoryRow): ZIO[ZConnection, Throwable, EmployeedepartmenthistoryRow] = { sql"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") @@ -73,7 +73,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { streamingInsert(s"""COPY humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeedepartmenthistoryRowUnsaved.text) } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.jdbcDecoder) + SelectBuilderSql("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EmployeedepartmenthistoryRow] = { sql"""select "businessentityid", "departmentid", "shiftid", "startdate"::text, "enddate"::text, "modifieddate"::text from humanresources.employeedepartmenthistory""".query(EmployeedepartmenthistoryRow.jdbcDecoder).selectStream @@ -89,7 +89,7 @@ class EmployeedepartmenthistoryRepoImpl extends EmployeedepartmenthistoryRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDate.setter)} AND "departmentid" = ${Segment.paramSegment(compositeId.departmentid)(DepartmentId.setter)} AND "shiftid" = ${Segment.paramSegment(compositeId.shiftid)(ShiftId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow.jdbcDecoder) + UpdateBuilder("humanresources.employeedepartmenthistory", EmployeedepartmenthistoryFields.structure, EmployeedepartmenthistoryRow.jdbcDecoder) } override def upsert(unsaved: EmployeedepartmenthistoryRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeedepartmenthistoryRow]] = { sql"""insert into humanresources.employeedepartmenthistory("businessentityid", "departmentid", "shiftid", "startdate", "enddate", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala index 0b7a39c3ac..a964897a2b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryRepoMock.scala @@ -29,7 +29,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def insert(unsaved: EmployeedepartmenthistoryRow): ZIO[ZConnection, Throwable, EmployeedepartmenthistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - SelectBuilderMock(EmployeedepartmenthistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(EmployeedepartmenthistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, EmployeedepartmenthistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class EmployeedepartmenthistoryRepoMock(toRow: Function1[Employeedepartmenthisto } } override def update: UpdateBuilder[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeedepartmenthistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeedepartmenthistoryRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeedepartmenthistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala deleted file mode 100644 index 7c99ac336d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeedepartmenthistory/EmployeedepartmenthistoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.department.DepartmentId -import adventureworks.humanresources.shift.ShiftId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmployeedepartmenthistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeedepartmenthistoryRow, val merge: (Row, EmployeedepartmenthistoryRow) => Row) - extends Relation[EmployeedepartmenthistoryFields, EmployeedepartmenthistoryRow, Row] - with EmployeedepartmenthistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val departmentid = new IdField[DepartmentId, Row](prefix, "departmentid", None, Some("int2"))(x => extract(x).departmentid, (row, value) => merge(row, extract(row).copy(departmentid = value))) - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int2"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val startdate = new IdField[TypoLocalDate, Row](prefix, "startdate", Some("text"), Some("date"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), Some("date"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, departmentid, shiftid, startdate, enddate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeedepartmenthistoryRow, merge: (NewRow, EmployeedepartmenthistoryRow) => NewRow): EmployeedepartmenthistoryStructure[NewRow] = - new EmployeedepartmenthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala index c06bb4aaff..fdce4a482d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait EmployeepayhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait EmployeepayhistoryFields[Row] { val payfrequency: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmployeepayhistoryFields extends EmployeepayhistoryStructure[EmployeepayhistoryRow](None, identity, (_, x) => x) +object EmployeepayhistoryFields { + val structure: Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, EmployeepayhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) + extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] { + + override val fields: EmployeepayhistoryFields[Row] = new EmployeepayhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) + override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) + override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.ratechangedate, fields.rate, fields.payfrequency, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala index 100f2e27d7..2a9693ae70 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoImpl.scala @@ -30,7 +30,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { sql"""delete from humanresources.employeepayhistory where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "ratechangedate" = ${Segment.paramSegment(compositeId.ratechangedate)(TypoLocalDateTime.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields) + DeleteBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure) } override def insert(unsaved: EmployeepayhistoryRow): ZIO[ZConnection, Throwable, EmployeepayhistoryRow] = { sql"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") @@ -70,7 +70,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { streamingInsert(s"""COPY humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmployeepayhistoryRowUnsaved.text) } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.jdbcDecoder) + SelectBuilderSql("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EmployeepayhistoryRow] = { sql"""select "businessentityid", "ratechangedate"::text, "rate", "payfrequency", "modifieddate"::text from humanresources.employeepayhistory""".query(EmployeepayhistoryRow.jdbcDecoder).selectStream @@ -87,7 +87,7 @@ class EmployeepayhistoryRepoImpl extends EmployeepayhistoryRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "ratechangedate" = ${Segment.paramSegment(compositeId.ratechangedate)(TypoLocalDateTime.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields, EmployeepayhistoryRow.jdbcDecoder) + UpdateBuilder("humanresources.employeepayhistory", EmployeepayhistoryFields.structure, EmployeepayhistoryRow.jdbcDecoder) } override def upsert(unsaved: EmployeepayhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeepayhistoryRow]] = { sql"""insert into humanresources.employeepayhistory("businessentityid", "ratechangedate", "rate", "payfrequency", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala index 32e7a6ebff..1d98eb7845 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryRepoMock.scala @@ -29,7 +29,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def insert(unsaved: EmployeepayhistoryRow): ZIO[ZConnection, Throwable, EmployeepayhistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - SelectBuilderMock(EmployeepayhistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(EmployeepayhistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, EmployeepayhistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class EmployeepayhistoryRepoMock(toRow: Function1[EmployeepayhistoryRowUnsaved, } } override def update: UpdateBuilder[EmployeepayhistoryFields, EmployeepayhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, EmployeepayhistoryFields.structure.fields, map) } override def upsert(unsaved: EmployeepayhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[EmployeepayhistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala deleted file mode 100644 index 6956bed217..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/employeepayhistory/EmployeepayhistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package employeepayhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class EmployeepayhistoryStructure[Row](val prefix: Option[String], val extract: Row => EmployeepayhistoryRow, val merge: (Row, EmployeepayhistoryRow) => Row) - extends Relation[EmployeepayhistoryFields, EmployeepayhistoryRow, Row] - with EmployeepayhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val ratechangedate = new IdField[TypoLocalDateTime, Row](prefix, "ratechangedate", Some("text"), Some("timestamp"))(x => extract(x).ratechangedate, (row, value) => merge(row, extract(row).copy(ratechangedate = value))) - override val rate = new Field[BigDecimal, Row](prefix, "rate", None, Some("numeric"))(x => extract(x).rate, (row, value) => merge(row, extract(row).copy(rate = value))) - override val payfrequency = new Field[TypoShort, Row](prefix, "payfrequency", None, Some("int2"))(x => extract(x).payfrequency, (row, value) => merge(row, extract(row).copy(payfrequency = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, ratechangedate, rate, payfrequency, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmployeepayhistoryRow, merge: (NewRow, EmployeepayhistoryRow) => NewRow): EmployeepayhistoryStructure[NewRow] = - new EmployeepayhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala index f77da744f2..21169ddc0f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait JobcandidateFields[Row] { val jobcandidateid: IdField[JobcandidateId, Row] @@ -20,5 +22,26 @@ trait JobcandidateFields[Row] { val resume: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object JobcandidateFields extends JobcandidateStructure[JobcandidateRow](None, identity, (_, x) => x) +object JobcandidateFields { + val structure: Relation[JobcandidateFields, JobcandidateRow, JobcandidateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) + extends Relation[JobcandidateFields, JobcandidateRow, Row] { + + override val fields: JobcandidateFields[Row] = new JobcandidateFields[Row] { + override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.resume, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala index 77c41a0df9..b56cbbcdad 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoImpl.scala @@ -30,7 +30,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { sql"""delete from humanresources.jobcandidate where "jobcandidateid" = ${Segment.paramSegment(jobcandidateid)(JobcandidateId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilder("humanresources.jobcandidate", JobcandidateFields) + DeleteBuilder("humanresources.jobcandidate", JobcandidateFields.structure) } override def insert(unsaved: JobcandidateRow): ZIO[ZConnection, Throwable, JobcandidateRow] = { sql"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") @@ -72,7 +72,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { streamingInsert(s"""COPY humanresources.jobcandidate("businessentityid", "resume", "jobcandidateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(JobcandidateRowUnsaved.text) } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.jdbcDecoder) + SelectBuilderSql("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, JobcandidateRow] = { sql"""select "jobcandidateid", "businessentityid", "resume", "modifieddate"::text from humanresources.jobcandidate""".query(JobcandidateRow.jdbcDecoder).selectStream @@ -92,7 +92,7 @@ class JobcandidateRepoImpl extends JobcandidateRepo { where "jobcandidateid" = ${Segment.paramSegment(jobcandidateid)(JobcandidateId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilder("humanresources.jobcandidate", JobcandidateFields, JobcandidateRow.jdbcDecoder) + UpdateBuilder("humanresources.jobcandidate", JobcandidateFields.structure, JobcandidateRow.jdbcDecoder) } override def upsert(unsaved: JobcandidateRow): ZIO[ZConnection, Throwable, UpdateResult[JobcandidateRow]] = { sql"""insert into humanresources.jobcandidate("jobcandidateid", "businessentityid", "resume", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala index 1a2a99ff66..53decc45fe 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateRepoMock.scala @@ -29,7 +29,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate ZIO.succeed(map.remove(jobcandidateid).isDefined) } override def delete: DeleteBuilder[JobcandidateFields, JobcandidateRow] = { - DeleteBuilderMock(DeleteParams.empty, JobcandidateFields, map) + DeleteBuilderMock(DeleteParams.empty, JobcandidateFields.structure.fields, map) } override def insert(unsaved: JobcandidateRow): ZIO[ZConnection, Throwable, JobcandidateRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[JobcandidateFields, JobcandidateRow] = { - SelectBuilderMock(JobcandidateFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(JobcandidateFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, JobcandidateRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class JobcandidateRepoMock(toRow: Function1[JobcandidateRowUnsaved, Jobcandidate } } override def update: UpdateBuilder[JobcandidateFields, JobcandidateRow] = { - UpdateBuilderMock(UpdateParams.empty, JobcandidateFields, map) + UpdateBuilderMock(UpdateParams.empty, JobcandidateFields.structure.fields, map) } override def upsert(unsaved: JobcandidateRow): ZIO[ZConnection, Throwable, UpdateResult[JobcandidateRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala deleted file mode 100644 index 067bb2b939..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/jobcandidate/JobcandidateStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package jobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class JobcandidateStructure[Row](val prefix: Option[String], val extract: Row => JobcandidateRow, val merge: (Row, JobcandidateRow) => Row) - extends Relation[JobcandidateFields, JobcandidateRow, Row] - with JobcandidateFields[Row] { outer => - - override val jobcandidateid = new IdField[JobcandidateId, Row](prefix, "jobcandidateid", None, Some("int4"))(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val resume = new OptField[TypoXml, Row](prefix, "resume", None, Some("xml"))(x => extract(x).resume, (row, value) => merge(row, extract(row).copy(resume = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, resume, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => JobcandidateRow, merge: (NewRow, JobcandidateRow) => NewRow): JobcandidateStructure[NewRow] = - new JobcandidateStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala index a2fdea72e1..bdcf4f3406 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoLocalTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShiftFields[Row] { val shiftid: IdField[ShiftId, Row] @@ -20,5 +22,27 @@ trait ShiftFields[Row] { val endtime: Field[TypoLocalTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShiftFields extends ShiftStructure[ShiftRow](None, identity, (_, x) => x) +object ShiftFields { + val structure: Relation[ShiftFields, ShiftRow, ShiftRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) + extends Relation[ShiftFields, ShiftRow, Row] { + + override val fields: ShiftFields[Row] = new ShiftFields[Row] { + override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) + override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shiftid, fields.name, fields.starttime, fields.endtime, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala index a28b05615f..428a4ec17d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoImpl.scala @@ -29,7 +29,7 @@ class ShiftRepoImpl extends ShiftRepo { sql"""delete from humanresources.shift where "shiftid" = ${Segment.paramSegment(shiftid)(ShiftId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilder("humanresources.shift", ShiftFields) + DeleteBuilder("humanresources.shift", ShiftFields.structure) } override def insert(unsaved: ShiftRow): ZIO[ZConnection, Throwable, ShiftRow] = { sql"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") @@ -72,7 +72,7 @@ class ShiftRepoImpl extends ShiftRepo { streamingInsert(s"""COPY humanresources.shift("name", "starttime", "endtime", "shiftid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShiftRowUnsaved.text) } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderSql("humanresources.shift", ShiftFields, ShiftRow.jdbcDecoder) + SelectBuilderSql("humanresources.shift", ShiftFields.structure, ShiftRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ShiftRow] = { sql"""select "shiftid", "name", "starttime"::text, "endtime"::text, "modifieddate"::text from humanresources.shift""".query(ShiftRow.jdbcDecoder).selectStream @@ -93,7 +93,7 @@ class ShiftRepoImpl extends ShiftRepo { where "shiftid" = ${Segment.paramSegment(shiftid)(ShiftId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilder("humanresources.shift", ShiftFields, ShiftRow.jdbcDecoder) + UpdateBuilder("humanresources.shift", ShiftFields.structure, ShiftRow.jdbcDecoder) } override def upsert(unsaved: ShiftRow): ZIO[ZConnection, Throwable, UpdateResult[ShiftRow]] = { sql"""insert into humanresources.shift("shiftid", "name", "starttime", "endtime", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala index 050570d1bd..567a930011 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftRepoMock.scala @@ -29,7 +29,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], ZIO.succeed(map.remove(shiftid).isDefined) } override def delete: DeleteBuilder[ShiftFields, ShiftRow] = { - DeleteBuilderMock(DeleteParams.empty, ShiftFields, map) + DeleteBuilderMock(DeleteParams.empty, ShiftFields.structure.fields, map) } override def insert(unsaved: ShiftRow): ZIO[ZConnection, Throwable, ShiftRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ShiftFields, ShiftRow] = { - SelectBuilderMock(ShiftFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ShiftFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ShiftRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ShiftRepoMock(toRow: Function1[ShiftRowUnsaved, ShiftRow], } } override def update: UpdateBuilder[ShiftFields, ShiftRow] = { - UpdateBuilderMock(UpdateParams.empty, ShiftFields, map) + UpdateBuilderMock(UpdateParams.empty, ShiftFields.structure.fields, map) } override def upsert(unsaved: ShiftRow): ZIO[ZConnection, Throwable, UpdateResult[ShiftRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala deleted file mode 100644 index b26d189a1a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/shift/ShiftStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package shift - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShiftStructure[Row](val prefix: Option[String], val extract: Row => ShiftRow, val merge: (Row, ShiftRow) => Row) - extends Relation[ShiftFields, ShiftRow, Row] - with ShiftFields[Row] { outer => - - override val shiftid = new IdField[ShiftId, Row](prefix, "shiftid", None, Some("int4"))(x => extract(x).shiftid, (row, value) => merge(row, extract(row).copy(shiftid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val starttime = new Field[TypoLocalTime, Row](prefix, "starttime", Some("text"), Some("time"))(x => extract(x).starttime, (row, value) => merge(row, extract(row).copy(starttime = value))) - override val endtime = new Field[TypoLocalTime, Row](prefix, "endtime", Some("text"), Some("time"))(x => extract(x).endtime, (row, value) => merge(row, extract(row).copy(endtime = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shiftid, name, starttime, endtime, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShiftRow, merge: (NewRow, ShiftRow) => NewRow): ShiftStructure[NewRow] = - new ShiftStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala index 1d61296667..1bdfd70f5c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeeViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VemployeeViewFields[Row] { val countryregionname: Field[Name, Row] val additionalcontactinfo: OptField[TypoXml, Row] } -object VemployeeViewFields extends VemployeeViewStructure[VemployeeViewRow](None, identity, (_, x) => x) +object VemployeeViewFields { + val structure: Relation[VemployeeViewFields, VemployeeViewRow, VemployeeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) + extends Relation[VemployeeViewFields, VemployeeViewRow, Row] { + + override val fields: VemployeeViewFields[Row] = new VemployeeViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.additionalcontactinfo) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala index 6c4689618c..8f0015749c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VemployeeViewRepoImpl extends VemployeeViewRepo { override def select: SelectBuilder[VemployeeViewFields, VemployeeViewRow] = { - SelectBuilderSql("humanresources.vemployee", VemployeeViewFields, VemployeeViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vemployee", VemployeeViewFields.structure, VemployeeViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VemployeeViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "additionalcontactinfo" from humanresources.vemployee""".query(VemployeeViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala deleted file mode 100644 index 62e865c75f..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployee/VemployeeViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployee - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeeViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeeViewRow, val merge: (Row, VemployeeViewRow) => Row) - extends Relation[VemployeeViewFields, VemployeeViewRow, Row] - with VemployeeViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, additionalcontactinfo) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeeViewRow, merge: (NewRow, VemployeeViewRow) => NewRow): VemployeeViewStructure[NewRow] = - new VemployeeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala index 1ecb4d0b1c..efa2687075 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmentViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait VemployeedepartmentViewFields[Row] { val groupname: Field[Name, Row] val startdate: Field[TypoLocalDate, Row] } -object VemployeedepartmentViewFields extends VemployeedepartmentViewStructure[VemployeedepartmentViewRow](None, identity, (_, x) => x) +object VemployeedepartmentViewFields { + val structure: Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, VemployeedepartmentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) + extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] { + + override val fields: VemployeedepartmentViewFields[Row] = new VemployeedepartmentViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.department, fields.groupname, fields.startdate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala index c4aaad62f1..c6ef75b6a9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VemployeedepartmentViewRepoImpl extends VemployeedepartmentViewRepo { override def select: SelectBuilder[VemployeedepartmentViewFields, VemployeedepartmentViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields, VemployeedepartmentViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vemployeedepartment", VemployeedepartmentViewFields.structure, VemployeedepartmentViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VemployeedepartmentViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "department", "groupname", "startdate"::text from humanresources.vemployeedepartment""".query(VemployeedepartmentViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala deleted file mode 100644 index 2d36b7de0c..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartment/VemployeedepartmentViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmentViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmentViewRow, val merge: (Row, VemployeedepartmentViewRow) => Row) - extends Relation[VemployeedepartmentViewFields, VemployeedepartmentViewRow, Row] - with VemployeedepartmentViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, department, groupname, startdate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmentViewRow, merge: (NewRow, VemployeedepartmentViewRow) => NewRow): VemployeedepartmentViewStructure[NewRow] = - new VemployeedepartmentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala index 0b8e99af1e..03c889b42f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VemployeedepartmenthistoryViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,33 @@ trait VemployeedepartmenthistoryViewFields[Row] { val startdate: Field[TypoLocalDate, Row] val enddate: OptField[TypoLocalDate, Row] } -object VemployeedepartmenthistoryViewFields extends VemployeedepartmenthistoryViewStructure[VemployeedepartmenthistoryViewRow](None, identity, (_, x) => x) +object VemployeedepartmenthistoryViewFields { + val structure: Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, VemployeedepartmenthistoryViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) + extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] { + + override val fields: VemployeedepartmenthistoryViewFields[Row] = new VemployeedepartmenthistoryViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) + override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) + override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) + override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.shift, fields.department, fields.groupname, fields.startdate, fields.enddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala index e677caa272..3d37a2f293 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VemployeedepartmenthistoryViewRepoImpl extends VemployeedepartmenthistoryViewRepo { override def select: SelectBuilder[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow] = { - SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vemployeedepartmenthistory", VemployeedepartmenthistoryViewFields.structure, VemployeedepartmenthistoryViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VemployeedepartmenthistoryViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "shift", "department", "groupname", "startdate"::text, "enddate"::text from humanresources.vemployeedepartmenthistory""".query(VemployeedepartmenthistoryViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala deleted file mode 100644 index a4d7298c70..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vemployeedepartmenthistory/VemployeedepartmenthistoryViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vemployeedepartmenthistory - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VemployeedepartmenthistoryViewStructure[Row](val prefix: Option[String], val extract: Row => VemployeedepartmenthistoryViewRow, val merge: (Row, VemployeedepartmenthistoryViewRow) => Row) - extends Relation[VemployeedepartmenthistoryViewFields, VemployeedepartmenthistoryViewRow, Row] - with VemployeedepartmenthistoryViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val shift = new Field[Name, Row](prefix, "shift", None, None)(x => extract(x).shift, (row, value) => merge(row, extract(row).copy(shift = value))) - override val department = new Field[Name, Row](prefix, "department", None, None)(x => extract(x).department, (row, value) => merge(row, extract(row).copy(department = value))) - override val groupname = new Field[Name, Row](prefix, "groupname", None, None)(x => extract(x).groupname, (row, value) => merge(row, extract(row).copy(groupname = value))) - override val startdate = new Field[TypoLocalDate, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDate, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, shift, department, groupname, startdate, enddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VemployeedepartmenthistoryViewRow, merge: (NewRow, VemployeedepartmenthistoryViewRow) => NewRow): VemployeedepartmenthistoryViewStructure[NewRow] = - new VemployeedepartmenthistoryViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala index 1f35768849..e39ea13cba 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.humanresources.jobcandidate.JobcandidateId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -31,5 +33,38 @@ trait VjobcandidateViewFields[Row] { val WebSite: OptField[String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VjobcandidateViewFields extends VjobcandidateViewStructure[VjobcandidateViewRow](None, identity, (_, x) => x) +object VjobcandidateViewFields { + val structure: Relation[VjobcandidateViewFields, VjobcandidateViewRow, VjobcandidateViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) + extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] { + + override val fields: VjobcandidateViewFields[Row] = new VjobcandidateViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) + override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) + override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) + override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) + override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) + override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) + override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) + override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) + override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) + override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) + override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) + override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) + override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.businessentityid, fields.NamePrefix, fields.NameFirst, fields.NameMiddle, fields.NameLast, fields.NameSuffix, fields.Skills, fields.AddrType, fields.AddrLocCountryRegion, fields.AddrLocState, fields.AddrLocCity, fields.AddrPostalCode, fields.EMail, fields.WebSite, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala index e89b2e1b46..65cb8465d7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VjobcandidateViewRepoImpl extends VjobcandidateViewRepo { override def select: SelectBuilder[VjobcandidateViewFields, VjobcandidateViewRow] = { - SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields, VjobcandidateViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vjobcandidate", VjobcandidateViewFields.structure, VjobcandidateViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VjobcandidateViewRow] = { sql"""select "jobcandidateid", "businessentityid", "Name.Prefix", "Name.First", "Name.Middle", "Name.Last", "Name.Suffix", "Skills", "Addr.Type", "Addr.Loc.CountryRegion", "Addr.Loc.State", "Addr.Loc.City", "Addr.PostalCode", "EMail", "WebSite", "modifieddate"::text from humanresources.vjobcandidate""".query(VjobcandidateViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala deleted file mode 100644 index c2523ce854..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidate/VjobcandidateViewStructure.scala +++ /dev/null @@ -1,44 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.humanresources.jobcandidate.JobcandidateId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateViewRow, val merge: (Row, VjobcandidateViewRow) => Row) - extends Relation[VjobcandidateViewFields, VjobcandidateViewRow, Row] - with VjobcandidateViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val businessentityid = new OptField[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val NamePrefix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Prefix", None, None)(x => extract(x).NamePrefix, (row, value) => merge(row, extract(row).copy(NamePrefix = value))) - override val NameFirst = new OptField[/* max 30 chars */ String, Row](prefix, "Name.First", None, None)(x => extract(x).NameFirst, (row, value) => merge(row, extract(row).copy(NameFirst = value))) - override val NameMiddle = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Middle", None, None)(x => extract(x).NameMiddle, (row, value) => merge(row, extract(row).copy(NameMiddle = value))) - override val NameLast = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Last", None, None)(x => extract(x).NameLast, (row, value) => merge(row, extract(row).copy(NameLast = value))) - override val NameSuffix = new OptField[/* max 30 chars */ String, Row](prefix, "Name.Suffix", None, None)(x => extract(x).NameSuffix, (row, value) => merge(row, extract(row).copy(NameSuffix = value))) - override val Skills = new OptField[String, Row](prefix, "Skills", None, None)(x => extract(x).Skills, (row, value) => merge(row, extract(row).copy(Skills = value))) - override val AddrType = new OptField[/* max 30 chars */ String, Row](prefix, "Addr.Type", None, None)(x => extract(x).AddrType, (row, value) => merge(row, extract(row).copy(AddrType = value))) - override val AddrLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.CountryRegion", None, None)(x => extract(x).AddrLocCountryRegion, (row, value) => merge(row, extract(row).copy(AddrLocCountryRegion = value))) - override val AddrLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.State", None, None)(x => extract(x).AddrLocState, (row, value) => merge(row, extract(row).copy(AddrLocState = value))) - override val AddrLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Addr.Loc.City", None, None)(x => extract(x).AddrLocCity, (row, value) => merge(row, extract(row).copy(AddrLocCity = value))) - override val AddrPostalCode = new OptField[/* max 20 chars */ String, Row](prefix, "Addr.PostalCode", None, None)(x => extract(x).AddrPostalCode, (row, value) => merge(row, extract(row).copy(AddrPostalCode = value))) - override val EMail = new OptField[String, Row](prefix, "EMail", None, None)(x => extract(x).EMail, (row, value) => merge(row, extract(row).copy(EMail = value))) - override val WebSite = new OptField[String, Row](prefix, "WebSite", None, None)(x => extract(x).WebSite, (row, value) => merge(row, extract(row).copy(WebSite = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, businessentityid, NamePrefix, NameFirst, NameMiddle, NameLast, NameSuffix, Skills, AddrType, AddrLocCountryRegion, AddrLocState, AddrLocCity, AddrPostalCode, EMail, WebSite, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateViewRow, merge: (NewRow, VjobcandidateViewRow) => NewRow): VjobcandidateViewStructure[NewRow] = - new VjobcandidateViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala index c404685066..97c87e74fd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateeducation import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateeducationViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -27,5 +29,35 @@ trait VjobcandidateeducationViewFields[Row] { val EduLocState: OptField[/* max 100 chars */ String, Row] val EduLocCity: OptField[/* max 100 chars */ String, Row] } -object VjobcandidateeducationViewFields extends VjobcandidateeducationViewStructure[VjobcandidateeducationViewRow](None, identity, (_, x) => x) +object VjobcandidateeducationViewFields { + val structure: Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, VjobcandidateeducationViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) + extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] { + + override val fields: VjobcandidateeducationViewFields[Row] = new VjobcandidateeducationViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) + override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) + override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) + override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) + override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) + override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) + override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) + override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) + override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) + override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) + override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) + override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EduLevel, fields.EduStartDate, fields.EduEndDate, fields.EduDegree, fields.EduMajor, fields.EduMinor, fields.EduGPA, fields.EduGPAScale, fields.EduSchool, fields.EduLocCountryRegion, fields.EduLocState, fields.EduLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala index ba183b79b6..1f0363d050 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VjobcandidateeducationViewRepoImpl extends VjobcandidateeducationViewRepo { override def select: SelectBuilder[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields, VjobcandidateeducationViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vjobcandidateeducation", VjobcandidateeducationViewFields.structure, VjobcandidateeducationViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VjobcandidateeducationViewRow] = { sql"""select "jobcandidateid", "Edu.Level", "Edu.StartDate"::text, "Edu.EndDate"::text, "Edu.Degree", "Edu.Major", "Edu.Minor", "Edu.GPA", "Edu.GPAScale", "Edu.School", "Edu.Loc.CountryRegion", "Edu.Loc.State", "Edu.Loc.City" from humanresources.vjobcandidateeducation""".query(VjobcandidateeducationViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala deleted file mode 100644 index f15b3290a9..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateeducation/VjobcandidateeducationViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateeducation - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateeducationViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateeducationViewRow, val merge: (Row, VjobcandidateeducationViewRow) => Row) - extends Relation[VjobcandidateeducationViewFields, VjobcandidateeducationViewRow, Row] - with VjobcandidateeducationViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EduLevel = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Level", None, None)(x => extract(x).EduLevel, (row, value) => merge(row, extract(row).copy(EduLevel = value))) - override val EduStartDate = new OptField[TypoLocalDate, Row](prefix, "Edu.StartDate", Some("text"), None)(x => extract(x).EduStartDate, (row, value) => merge(row, extract(row).copy(EduStartDate = value))) - override val EduEndDate = new OptField[TypoLocalDate, Row](prefix, "Edu.EndDate", Some("text"), None)(x => extract(x).EduEndDate, (row, value) => merge(row, extract(row).copy(EduEndDate = value))) - override val EduDegree = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Degree", None, None)(x => extract(x).EduDegree, (row, value) => merge(row, extract(row).copy(EduDegree = value))) - override val EduMajor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Major", None, None)(x => extract(x).EduMajor, (row, value) => merge(row, extract(row).copy(EduMajor = value))) - override val EduMinor = new OptField[/* max 50 chars */ String, Row](prefix, "Edu.Minor", None, None)(x => extract(x).EduMinor, (row, value) => merge(row, extract(row).copy(EduMinor = value))) - override val EduGPA = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPA", None, None)(x => extract(x).EduGPA, (row, value) => merge(row, extract(row).copy(EduGPA = value))) - override val EduGPAScale = new OptField[/* max 5 chars */ String, Row](prefix, "Edu.GPAScale", None, None)(x => extract(x).EduGPAScale, (row, value) => merge(row, extract(row).copy(EduGPAScale = value))) - override val EduSchool = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.School", None, None)(x => extract(x).EduSchool, (row, value) => merge(row, extract(row).copy(EduSchool = value))) - override val EduLocCountryRegion = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.CountryRegion", None, None)(x => extract(x).EduLocCountryRegion, (row, value) => merge(row, extract(row).copy(EduLocCountryRegion = value))) - override val EduLocState = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.State", None, None)(x => extract(x).EduLocState, (row, value) => merge(row, extract(row).copy(EduLocState = value))) - override val EduLocCity = new OptField[/* max 100 chars */ String, Row](prefix, "Edu.Loc.City", None, None)(x => extract(x).EduLocCity, (row, value) => merge(row, extract(row).copy(EduLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EduLevel, EduStartDate, EduEndDate, EduDegree, EduMajor, EduMinor, EduGPA, EduGPAScale, EduSchool, EduLocCountryRegion, EduLocState, EduLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateeducationViewRow, merge: (NewRow, VjobcandidateeducationViewRow) => NewRow): VjobcandidateeducationViewStructure[NewRow] = - new VjobcandidateeducationViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala index f7df4754b7..b9f6602b2f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewFields.scala @@ -10,7 +10,9 @@ package vjobcandidateemployment import adventureworks.customtypes.TypoLocalDate import adventureworks.humanresources.jobcandidate.JobcandidateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VjobcandidateemploymentViewFields[Row] { val jobcandidateid: Field[JobcandidateId, Row] @@ -25,5 +27,33 @@ trait VjobcandidateemploymentViewFields[Row] { val EmpLocState: OptField[String, Row] val EmpLocCity: OptField[String, Row] } -object VjobcandidateemploymentViewFields extends VjobcandidateemploymentViewStructure[VjobcandidateemploymentViewRow](None, identity, (_, x) => x) +object VjobcandidateemploymentViewFields { + val structure: Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, VjobcandidateemploymentViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) + extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] { + + override val fields: VjobcandidateemploymentViewFields[Row] = new VjobcandidateemploymentViewFields[Row] { + override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) + override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) + override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) + override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) + override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) + override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) + override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) + override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) + override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) + override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) + override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.jobcandidateid, fields.EmpStartDate, fields.EmpEndDate, fields.EmpOrgName, fields.EmpJobTitle, fields.EmpResponsibility, fields.EmpFunctionCategory, fields.EmpIndustryCategory, fields.EmpLocCountryRegion, fields.EmpLocState, fields.EmpLocCity) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala index 60893ebc50..fb5101ae41 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VjobcandidateemploymentViewRepoImpl extends VjobcandidateemploymentViewRepo { override def select: SelectBuilder[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow] = { - SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow.jdbcDecoder) + SelectBuilderSql("humanresources.vjobcandidateemployment", VjobcandidateemploymentViewFields.structure, VjobcandidateemploymentViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VjobcandidateemploymentViewRow] = { sql"""select "jobcandidateid", "Emp.StartDate"::text, "Emp.EndDate"::text, "Emp.OrgName", "Emp.JobTitle", "Emp.Responsibility", "Emp.FunctionCategory", "Emp.IndustryCategory", "Emp.Loc.CountryRegion", "Emp.Loc.State", "Emp.Loc.City" from humanresources.vjobcandidateemployment""".query(VjobcandidateemploymentViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala deleted file mode 100644 index 249a29af29..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/humanresources/vjobcandidateemployment/VjobcandidateemploymentViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package humanresources -package vjobcandidateemployment - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.humanresources.jobcandidate.JobcandidateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VjobcandidateemploymentViewStructure[Row](val prefix: Option[String], val extract: Row => VjobcandidateemploymentViewRow, val merge: (Row, VjobcandidateemploymentViewRow) => Row) - extends Relation[VjobcandidateemploymentViewFields, VjobcandidateemploymentViewRow, Row] - with VjobcandidateemploymentViewFields[Row] { outer => - - override val jobcandidateid = new Field[JobcandidateId, Row](prefix, "jobcandidateid", None, None)(x => extract(x).jobcandidateid, (row, value) => merge(row, extract(row).copy(jobcandidateid = value))) - override val EmpStartDate = new OptField[TypoLocalDate, Row](prefix, "Emp.StartDate", Some("text"), None)(x => extract(x).EmpStartDate, (row, value) => merge(row, extract(row).copy(EmpStartDate = value))) - override val EmpEndDate = new OptField[TypoLocalDate, Row](prefix, "Emp.EndDate", Some("text"), None)(x => extract(x).EmpEndDate, (row, value) => merge(row, extract(row).copy(EmpEndDate = value))) - override val EmpOrgName = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.OrgName", None, None)(x => extract(x).EmpOrgName, (row, value) => merge(row, extract(row).copy(EmpOrgName = value))) - override val EmpJobTitle = new OptField[/* max 100 chars */ String, Row](prefix, "Emp.JobTitle", None, None)(x => extract(x).EmpJobTitle, (row, value) => merge(row, extract(row).copy(EmpJobTitle = value))) - override val EmpResponsibility = new OptField[String, Row](prefix, "Emp.Responsibility", None, None)(x => extract(x).EmpResponsibility, (row, value) => merge(row, extract(row).copy(EmpResponsibility = value))) - override val EmpFunctionCategory = new OptField[String, Row](prefix, "Emp.FunctionCategory", None, None)(x => extract(x).EmpFunctionCategory, (row, value) => merge(row, extract(row).copy(EmpFunctionCategory = value))) - override val EmpIndustryCategory = new OptField[String, Row](prefix, "Emp.IndustryCategory", None, None)(x => extract(x).EmpIndustryCategory, (row, value) => merge(row, extract(row).copy(EmpIndustryCategory = value))) - override val EmpLocCountryRegion = new OptField[String, Row](prefix, "Emp.Loc.CountryRegion", None, None)(x => extract(x).EmpLocCountryRegion, (row, value) => merge(row, extract(row).copy(EmpLocCountryRegion = value))) - override val EmpLocState = new OptField[String, Row](prefix, "Emp.Loc.State", None, None)(x => extract(x).EmpLocState, (row, value) => merge(row, extract(row).copy(EmpLocState = value))) - override val EmpLocCity = new OptField[String, Row](prefix, "Emp.Loc.City", None, None)(x => extract(x).EmpLocCity, (row, value) => merge(row, extract(row).copy(EmpLocCity = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](jobcandidateid, EmpStartDate, EmpEndDate, EmpOrgName, EmpJobTitle, EmpResponsibility, EmpFunctionCategory, EmpIndustryCategory, EmpLocCountryRegion, EmpLocState, EmpLocCity) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VjobcandidateemploymentViewRow, merge: (NewRow, VjobcandidateemploymentViewRow) => NewRow): VjobcandidateemploymentViewStructure[NewRow] = - new VjobcandidateemploymentViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala index cc5665827f..5fecc56058 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.address.AddressId import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AViewFields[Row] { val id: Field[AddressId, Row] @@ -27,5 +29,32 @@ trait AViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AViewFields extends AViewStructure[AViewRow](None, identity, (_, x) => x) +object AViewFields { + val structure: Relation[AViewFields, AViewRow, AViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) + extends Relation[AViewFields, AViewRow, Row] { + + override val fields: AViewFields[Row] = new AViewFields[Row] { + override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala index ccc15182b8..84c1e572f0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class AViewRepoImpl extends AViewRepo { override def select: SelectBuilder[AViewFields, AViewRow] = { - SelectBuilderSql("pe.a", AViewFields, AViewRow.jdbcDecoder) + SelectBuilderSql("pe.a", AViewFields.structure, AViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, AViewRow] = { sql"""select "id", "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text from pe.a""".query(AViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala deleted file mode 100644 index d35821de31..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/a/AViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package a - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AViewStructure[Row](val prefix: Option[String], val extract: Row => AViewRow, val merge: (Row, AViewRow) => Row) - extends Relation[AViewFields, AViewRow, Row] - with AViewFields[Row] { outer => - - override val id = new Field[AddressId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, None)(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AViewRow, merge: (NewRow, AViewRow) => NewRow): AViewStructure[NewRow] = - new AViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala index 6e39752a18..73d165bd6c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.addresstype.AddresstypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait AtViewFields[Row] { val id: Field[AddresstypeId, Row] @@ -20,5 +22,27 @@ trait AtViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AtViewFields extends AtViewStructure[AtViewRow](None, identity, (_, x) => x) +object AtViewFields { + val structure: Relation[AtViewFields, AtViewRow, AtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) + extends Relation[AtViewFields, AtViewRow, Row] { + + override val fields: AtViewFields[Row] = new AtViewFields[Row] { + override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala index a64b7cc968..bc67fb25a5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class AtViewRepoImpl extends AtViewRepo { override def select: SelectBuilder[AtViewFields, AtViewRow] = { - SelectBuilderSql("pe.at", AtViewFields, AtViewRow.jdbcDecoder) + SelectBuilderSql("pe.at", AtViewFields.structure, AtViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, AtViewRow] = { sql"""select "id", "addresstypeid", "name", "rowguid", "modifieddate"::text from pe.at""".query(AtViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala deleted file mode 100644 index 381f16a972..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/at/AtViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package at - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class AtViewStructure[Row](val prefix: Option[String], val extract: Row => AtViewRow, val merge: (Row, AtViewRow) => Row) - extends Relation[AtViewFields, AtViewRow, Row] - with AtViewFields[Row] { outer => - - override val id = new Field[AddresstypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AtViewRow, merge: (NewRow, AtViewRow) => NewRow): AtViewStructure[NewRow] = - new AtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala index f8bd6c8773..44a35fbf85 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait BeViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeViewFields extends BeViewStructure[BeViewRow](None, identity, (_, x) => x) +object BeViewFields { + val structure: Relation[BeViewFields, BeViewRow, BeViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) + extends Relation[BeViewFields, BeViewRow, Row] { + + override val fields: BeViewFields[Row] = new BeViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala index 044a6ad9a6..b46742a774 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class BeViewRepoImpl extends BeViewRepo { override def select: SelectBuilder[BeViewFields, BeViewRow] = { - SelectBuilderSql("pe.be", BeViewFields, BeViewRow.jdbcDecoder) + SelectBuilderSql("pe.be", BeViewFields.structure, BeViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BeViewRow] = { sql"""select "id", "businessentityid", "rowguid", "modifieddate"::text from pe.be""".query(BeViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala deleted file mode 100644 index ef782f336b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/be/BeViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package be - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeViewStructure[Row](val prefix: Option[String], val extract: Row => BeViewRow, val merge: (Row, BeViewRow) => Row) - extends Relation[BeViewFields, BeViewRow, Row] - with BeViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeViewRow, merge: (NewRow, BeViewRow) => NewRow): BeViewStructure[NewRow] = - new BeViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala index 38e0461608..953b76e826 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BeaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -22,5 +24,28 @@ trait BeaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BeaViewFields extends BeaViewStructure[BeaViewRow](None, identity, (_, x) => x) +object BeaViewFields { + val structure: Relation[BeaViewFields, BeaViewRow, BeaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) + extends Relation[BeaViewFields, BeaViewRow, Row] { + + override val fields: BeaViewFields[Row] = new BeaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala index efd3545efd..b6b1ded38b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class BeaViewRepoImpl extends BeaViewRepo { override def select: SelectBuilder[BeaViewFields, BeaViewRow] = { - SelectBuilderSql("pe.bea", BeaViewFields, BeaViewRow.jdbcDecoder) + SelectBuilderSql("pe.bea", BeaViewFields.structure, BeaViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BeaViewRow] = { sql"""select "id", "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text from pe.bea""".query(BeaViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala deleted file mode 100644 index 9939c42684..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bea/BeaViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bea - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BeaViewStructure[Row](val prefix: Option[String], val extract: Row => BeaViewRow, val merge: (Row, BeaViewRow) => Row) - extends Relation[BeaViewFields, BeaViewRow, Row] - with BeaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new Field[AddressId, Row](prefix, "addressid", None, None)(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new Field[AddresstypeId, Row](prefix, "addresstypeid", None, None)(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BeaViewRow, merge: (NewRow, BeaViewRow) => NewRow): BeaViewStructure[NewRow] = - new BeaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala index 5724f5ff7a..0e872552fe 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait BecViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -21,5 +23,28 @@ trait BecViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BecViewFields extends BecViewStructure[BecViewRow](None, identity, (_, x) => x) +object BecViewFields { + val structure: Relation[BecViewFields, BecViewRow, BecViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) + extends Relation[BecViewFields, BecViewRow, Row] { + + override val fields: BecViewFields[Row] = new BecViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala index cac12061b3..1c43df6645 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class BecViewRepoImpl extends BecViewRepo { override def select: SelectBuilder[BecViewFields, BecViewRow] = { - SelectBuilderSql("pe.bec", BecViewFields, BecViewRow.jdbcDecoder) + SelectBuilderSql("pe.bec", BecViewFields.structure, BecViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BecViewRow] = { sql"""select "id", "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text from pe.bec""".query(BecViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala deleted file mode 100644 index a09467f9c3..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/bec/BecViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package bec - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class BecViewStructure[Row](val prefix: Option[String], val extract: Row => BecViewRow, val merge: (Row, BecViewRow) => Row) - extends Relation[BecViewFields, BecViewRow, Row] - with BecViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new Field[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BecViewRow, merge: (NewRow, BecViewRow) => NewRow): BecViewStructure[NewRow] = - new BecViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala index 71ec6e83a7..b3f8dc09fb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala index e19171fab3..4c290abd11 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("pe.cr", CrViewFields, CrViewRow.jdbcDecoder) + SelectBuilderSql("pe.cr", CrViewFields.structure, CrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CrViewRow] = { sql"""select "countryregioncode", "name", "modifieddate"::text from pe.cr""".query(CrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala deleted file mode 100644 index 32b8f25325..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/cr/CrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala index c00715d06d..05e359b886 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.contacttype.ContacttypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CtViewFields[Row] { val id: Field[ContacttypeId, Row] @@ -18,5 +20,26 @@ trait CtViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CtViewFields extends CtViewStructure[CtViewRow](None, identity, (_, x) => x) +object CtViewFields { + val structure: Relation[CtViewFields, CtViewRow, CtViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) + extends Relation[CtViewFields, CtViewRow, Row] { + + override val fields: CtViewFields[Row] = new CtViewFields[Row] { + override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala index f67d507ee9..053ee98a11 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CtViewRepoImpl extends CtViewRepo { override def select: SelectBuilder[CtViewFields, CtViewRow] = { - SelectBuilderSql("pe.ct", CtViewFields, CtViewRow.jdbcDecoder) + SelectBuilderSql("pe.ct", CtViewFields.structure, CtViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CtViewRow] = { sql"""select "id", "contacttypeid", "name", "modifieddate"::text from pe.ct""".query(CtViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala deleted file mode 100644 index a614c2a88f..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/ct/CtViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package ct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.contacttype.ContacttypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CtViewStructure[Row](val prefix: Option[String], val extract: Row => CtViewRow, val merge: (Row, CtViewRow) => Row) - extends Relation[CtViewFields, CtViewRow, Row] - with CtViewFields[Row] { outer => - - override val id = new Field[ContacttypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val contacttypeid = new Field[ContacttypeId, Row](prefix, "contacttypeid", None, None)(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CtViewRow, merge: (NewRow, CtViewRow) => NewRow): CtViewStructure[NewRow] = - new CtViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala index 8ed9659638..22e526b4d7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EViewFields[Row] { val id: Field[Int, Row] @@ -21,5 +23,28 @@ trait EViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EViewFields extends EViewStructure[EViewRow](None, identity, (_, x) => x) +object EViewFields { + val structure: Relation[EViewFields, EViewRow, EViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) + extends Relation[EViewFields, EViewRow, Row] { + + override val fields: EViewFields[Row] = new EViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala index 2d04c4a989..ef0e602e8d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class EViewRepoImpl extends EViewRepo { override def select: SelectBuilder[EViewFields, EViewRow] = { - SelectBuilderSql("pe.e", EViewFields, EViewRow.jdbcDecoder) + SelectBuilderSql("pe.e", EViewFields.structure, EViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EViewRow] = { sql"""select "id", "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text from pe.e""".query(EViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala deleted file mode 100644 index 7003503552..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/e/EViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package e - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EViewStructure[Row](val prefix: Option[String], val extract: Row => EViewRow, val merge: (Row, EViewRow) => Row) - extends Relation[EViewFields, EViewRow, Row] - with EViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new Field[Int, Row](prefix, "emailaddressid", None, None)(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EViewRow, merge: (NewRow, EViewRow) => NewRow): EViewStructure[NewRow] = - new EViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala index 8880bac907..1d5c84ab96 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -33,5 +35,36 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala index 3a24129b5a..02d906b15b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pe.p", PViewFields, PViewRow.jdbcDecoder) + SelectBuilderSql("pe.p", PViewFields.structure, PViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PViewRow] = { sql"""select "id", "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text from pe.p""".query(PViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala deleted file mode 100644 index 29b01d51a8..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/p/PViewStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, None)(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, None)(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, None)(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala index 4df2b951fc..8c828a7e8e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PaViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait PaViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PaViewFields extends PaViewStructure[PaViewRow](None, identity, (_, x) => x) +object PaViewFields { + val structure: Relation[PaViewFields, PaViewRow, PaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) + extends Relation[PaViewFields, PaViewRow, Row] { + + override val fields: PaViewFields[Row] = new PaViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala index 2f33f850b6..292bda0a01 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PaViewRepoImpl extends PaViewRepo { override def select: SelectBuilder[PaViewFields, PaViewRow] = { - SelectBuilderSql("pe.pa", PaViewFields, PaViewRow.jdbcDecoder) + SelectBuilderSql("pe.pa", PaViewFields.structure, PaViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PaViewRow] = { sql"""select "id", "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text from pe.pa""".query(PaViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala deleted file mode 100644 index 77b7c56702..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pa/PaViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pa - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PaViewStructure[Row](val prefix: Option[String], val extract: Row => PaViewRow, val merge: (Row, PaViewRow) => Row) - extends Relation[PaViewFields, PaViewRow, Row] - with PaViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PaViewRow, merge: (NewRow, PaViewRow) => NewRow): PaViewStructure[NewRow] = - new PaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala index 9af94760e7..630721766e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PntViewFields[Row] { val id: Field[PhonenumbertypeId, Row] @@ -18,5 +20,26 @@ trait PntViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PntViewFields extends PntViewStructure[PntViewRow](None, identity, (_, x) => x) +object PntViewFields { + val structure: Relation[PntViewFields, PntViewRow, PntViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) + extends Relation[PntViewFields, PntViewRow, Row] { + + override val fields: PntViewFields[Row] = new PntViewFields[Row] { + override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala index 4e6cb4e3a2..7c0026b82e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PntViewRepoImpl extends PntViewRepo { override def select: SelectBuilder[PntViewFields, PntViewRow] = { - SelectBuilderSql("pe.pnt", PntViewFields, PntViewRow.jdbcDecoder) + SelectBuilderSql("pe.pnt", PntViewFields.structure, PntViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PntViewRow] = { sql"""select "id", "phonenumbertypeid", "name", "modifieddate"::text from pe.pnt""".query(PntViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala deleted file mode 100644 index d44f7f510a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pnt/PntViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pnt - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PntViewStructure[Row](val prefix: Option[String], val extract: Row => PntViewRow, val merge: (Row, PntViewRow) => Row) - extends Relation[PntViewFields, PntViewRow, Row] - with PntViewFields[Row] { outer => - - override val id = new Field[PhonenumbertypeId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PntViewRow, merge: (NewRow, PntViewRow) => NewRow): PntViewStructure[NewRow] = - new PntViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala index 0b585f248d..f0171eea8c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PpViewFields[Row] { val phonenumbertypeid: Field[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala index 281bbd186e..fb95276110 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pe.pp", PpViewFields, PpViewRow.jdbcDecoder) + SelectBuilderSql("pe.pp", PpViewFields.structure, PpViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PpViewRow] = { sql"""select "id", "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text from pe.pp""".query(PpViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala deleted file mode 100644 index e7f3f91a3f..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/pp/PpViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package pp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new Field[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new Field[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, None)(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala index 5a5f45bc45..0ab206b422 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewFields.scala @@ -15,6 +15,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[StateprovinceId, Row] @@ -27,5 +29,31 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala index 46d277d600..0160e1060d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("pe.sp", SpViewFields, SpViewRow.jdbcDecoder) + SelectBuilderSql("pe.sp", SpViewFields.structure, SpViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SpViewRow] = { sql"""select "id", "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text from pe.sp""".query(SpViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala deleted file mode 100644 index 453b934478..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pe/sp/SpViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pe -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[StateprovinceId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressFields.scala index b492204f15..b5c63e2aff 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait AddressFields[Row] { val addressid: IdField[AddressId, Row] @@ -26,5 +28,31 @@ trait AddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddressFields extends AddressStructure[AddressRow](None, identity, (_, x) => x) +object AddressFields { + val structure: Relation[AddressFields, AddressRow, AddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) + extends Relation[AddressFields, AddressRow, Row] { + + override val fields: AddressFields[Row] = new AddressFields[Row] { + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addressid, fields.addressline1, fields.addressline2, fields.city, fields.stateprovinceid, fields.postalcode, fields.spatiallocation, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala index 09c89dbc86..82f5907262 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoImpl.scala @@ -31,7 +31,7 @@ class AddressRepoImpl extends AddressRepo { sql"""delete from person.address where "addressid" = ${Segment.paramSegment(addressid)(AddressId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilder("person.address", AddressFields) + DeleteBuilder("person.address", AddressFields.structure) } override def insert(unsaved: AddressRow): ZIO[ZConnection, Throwable, AddressRow] = { sql"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") @@ -81,7 +81,7 @@ class AddressRepoImpl extends AddressRepo { streamingInsert(s"""COPY person.address("addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "addressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(AddressRowUnsaved.text) } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderSql("person.address", AddressFields, AddressRow.jdbcDecoder) + SelectBuilderSql("person.address", AddressFields.structure, AddressRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, AddressRow] = { sql"""select "addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate"::text from person.address""".query(AddressRow.jdbcDecoder).selectStream @@ -106,7 +106,7 @@ class AddressRepoImpl extends AddressRepo { where "addressid" = ${Segment.paramSegment(addressid)(AddressId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilder("person.address", AddressFields, AddressRow.jdbcDecoder) + UpdateBuilder("person.address", AddressFields.structure, AddressRow.jdbcDecoder) } override def upsert(unsaved: AddressRow): ZIO[ZConnection, Throwable, UpdateResult[AddressRow]] = { sql"""insert into person.address("addressid", "addressline1", "addressline2", "city", "stateprovinceid", "postalcode", "spatiallocation", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala index 8cc012df3d..40c0569f0c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressRepoMock.scala @@ -29,7 +29,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], ZIO.succeed(map.remove(addressid).isDefined) } override def delete: DeleteBuilder[AddressFields, AddressRow] = { - DeleteBuilderMock(DeleteParams.empty, AddressFields, map) + DeleteBuilderMock(DeleteParams.empty, AddressFields.structure.fields, map) } override def insert(unsaved: AddressRow): ZIO[ZConnection, Throwable, AddressRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[AddressFields, AddressRow] = { - SelectBuilderMock(AddressFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(AddressFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, AddressRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class AddressRepoMock(toRow: Function1[AddressRowUnsaved, AddressRow], } } override def update: UpdateBuilder[AddressFields, AddressRow] = { - UpdateBuilderMock(UpdateParams.empty, AddressFields, map) + UpdateBuilderMock(UpdateParams.empty, AddressFields.structure.fields, map) } override def upsert(unsaved: AddressRow): ZIO[ZConnection, Throwable, UpdateResult[AddressRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala deleted file mode 100644 index 58886fe980..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/address/AddressStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package address - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class AddressStructure[Row](val prefix: Option[String], val extract: Row => AddressRow, val merge: (Row, AddressRow) => Row) - extends Relation[AddressFields, AddressRow, Row] - with AddressFields[Row] { outer => - - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val spatiallocation = new OptField[TypoBytea, Row](prefix, "spatiallocation", None, Some("bytea"))(x => extract(x).spatiallocation, (row, value) => merge(row, extract(row).copy(spatiallocation = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addressid, addressline1, addressline2, city, stateprovinceid, postalcode, spatiallocation, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddressRow, merge: (NewRow, AddressRow) => NewRow): AddressStructure[NewRow] = - new AddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala index 3abd412d62..8af35e8c39 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait AddresstypeFields[Row] { val addresstypeid: IdField[AddresstypeId, Row] @@ -19,5 +21,26 @@ trait AddresstypeFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object AddresstypeFields extends AddresstypeStructure[AddresstypeRow](None, identity, (_, x) => x) +object AddresstypeFields { + val structure: Relation[AddresstypeFields, AddresstypeRow, AddresstypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) + extends Relation[AddresstypeFields, AddresstypeRow, Row] { + + override val fields: AddresstypeFields[Row] = new AddresstypeFields[Row] { + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.addresstypeid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala index 1ae4933df4..8861a05cdb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoImpl.scala @@ -29,7 +29,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { sql"""delete from person.addresstype where "addresstypeid" = ${Segment.paramSegment(addresstypeid)(AddresstypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilder("person.addresstype", AddresstypeFields) + DeleteBuilder("person.addresstype", AddresstypeFields.structure) } override def insert(unsaved: AddresstypeRow): ZIO[ZConnection, Throwable, AddresstypeRow] = { sql"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { streamingInsert(s"""COPY person.addresstype("name", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(AddresstypeRowUnsaved.text) } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderSql("person.addresstype", AddresstypeFields, AddresstypeRow.jdbcDecoder) + SelectBuilderSql("person.addresstype", AddresstypeFields.structure, AddresstypeRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, AddresstypeRow] = { sql"""select "addresstypeid", "name", "rowguid", "modifieddate"::text from person.addresstype""".query(AddresstypeRow.jdbcDecoder).selectStream @@ -94,7 +94,7 @@ class AddresstypeRepoImpl extends AddresstypeRepo { where "addresstypeid" = ${Segment.paramSegment(addresstypeid)(AddresstypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilder("person.addresstype", AddresstypeFields, AddresstypeRow.jdbcDecoder) + UpdateBuilder("person.addresstype", AddresstypeFields.structure, AddresstypeRow.jdbcDecoder) } override def upsert(unsaved: AddresstypeRow): ZIO[ZConnection, Throwable, UpdateResult[AddresstypeRow]] = { sql"""insert into person.addresstype("addresstypeid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala index 6e41ff0fcf..eb86ea53ab 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeRepoMock.scala @@ -29,7 +29,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow ZIO.succeed(map.remove(addresstypeid).isDefined) } override def delete: DeleteBuilder[AddresstypeFields, AddresstypeRow] = { - DeleteBuilderMock(DeleteParams.empty, AddresstypeFields, map) + DeleteBuilderMock(DeleteParams.empty, AddresstypeFields.structure.fields, map) } override def insert(unsaved: AddresstypeRow): ZIO[ZConnection, Throwable, AddresstypeRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[AddresstypeFields, AddresstypeRow] = { - SelectBuilderMock(AddresstypeFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(AddresstypeFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, AddresstypeRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class AddresstypeRepoMock(toRow: Function1[AddresstypeRowUnsaved, AddresstypeRow } } override def update: UpdateBuilder[AddresstypeFields, AddresstypeRow] = { - UpdateBuilderMock(UpdateParams.empty, AddresstypeFields, map) + UpdateBuilderMock(UpdateParams.empty, AddresstypeFields.structure.fields, map) } override def upsert(unsaved: AddresstypeRow): ZIO[ZConnection, Throwable, UpdateResult[AddresstypeRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala deleted file mode 100644 index 26194371da..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/addresstype/AddresstypeStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package addresstype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class AddresstypeStructure[Row](val prefix: Option[String], val extract: Row => AddresstypeRow, val merge: (Row, AddresstypeRow) => Row) - extends Relation[AddresstypeFields, AddresstypeRow, Row] - with AddresstypeFields[Row] { outer => - - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](addresstypeid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => AddresstypeRow, merge: (NewRow, AddresstypeRow) => NewRow): AddresstypeStructure[NewRow] = - new AddresstypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala index fd3999d9a5..c722c5d75f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityFields.scala @@ -10,12 +10,34 @@ package businessentity import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityFields extends BusinessentityStructure[BusinessentityRow](None, identity, (_, x) => x) +object BusinessentityFields { + val structure: Relation[BusinessentityFields, BusinessentityRow, BusinessentityRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) + extends Relation[BusinessentityFields, BusinessentityRow, Row] { + + override val fields: BusinessentityFields[Row] = new BusinessentityFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala index 09aa9924d7..87634536c4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoImpl.scala @@ -28,7 +28,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { sql"""delete from person.businessentity where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilder("person.businessentity", BusinessentityFields) + DeleteBuilder("person.businessentity", BusinessentityFields.structure) } override def insert(unsaved: BusinessentityRow): ZIO[ZConnection, Throwable, BusinessentityRow] = { sql"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") @@ -72,7 +72,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { streamingInsert(s"""COPY person.businessentity("businessentityid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentityRowUnsaved.text) } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderSql("person.businessentity", BusinessentityFields, BusinessentityRow.jdbcDecoder) + SelectBuilderSql("person.businessentity", BusinessentityFields.structure, BusinessentityRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentityRow] = { sql"""select "businessentityid", "rowguid", "modifieddate"::text from person.businessentity""".query(BusinessentityRow.jdbcDecoder).selectStream @@ -91,7 +91,7 @@ class BusinessentityRepoImpl extends BusinessentityRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilder("person.businessentity", BusinessentityFields, BusinessentityRow.jdbcDecoder) + UpdateBuilder("person.businessentity", BusinessentityFields.structure, BusinessentityRow.jdbcDecoder) } override def upsert(unsaved: BusinessentityRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentityRow]] = { sql"""insert into person.businessentity("businessentityid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala index 7937bbe28d..7d21aed2e7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityRepoMock.scala @@ -29,7 +29,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[BusinessentityFields, BusinessentityRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityFields.structure.fields, map) } override def insert(unsaved: BusinessentityRow): ZIO[ZConnection, Throwable, BusinessentityRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[BusinessentityFields, BusinessentityRow] = { - SelectBuilderMock(BusinessentityFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(BusinessentityFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentityRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class BusinessentityRepoMock(toRow: Function1[BusinessentityRowUnsaved, Business } } override def update: UpdateBuilder[BusinessentityFields, BusinessentityRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityFields.structure.fields, map) } override def upsert(unsaved: BusinessentityRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentityRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala deleted file mode 100644 index d99792e42a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentity/BusinessentityStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentity - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityRow, val merge: (Row, BusinessentityRow) => Row) - extends Relation[BusinessentityFields, BusinessentityRow, Row] - with BusinessentityFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityRow, merge: (NewRow, BusinessentityRow) => NewRow): BusinessentityStructure[NewRow] = - new BusinessentityStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala index 69b5da117f..0e559e6517 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.address.AddressId import adventureworks.person.addresstype.AddresstypeId import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentityaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -22,5 +24,27 @@ trait BusinessentityaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentityaddressFields extends BusinessentityaddressStructure[BusinessentityaddressRow](None, identity, (_, x) => x) +object BusinessentityaddressFields { + val structure: Relation[BusinessentityaddressFields, BusinessentityaddressRow, BusinessentityaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) + extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] { + + override val fields: BusinessentityaddressFields[Row] = new BusinessentityaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) + override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.addressid, fields.addresstypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala index 247d020bae..b1faa58159 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoImpl.scala @@ -31,7 +31,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { sql"""delete from person.businessentityaddress where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "addressid" = ${Segment.paramSegment(compositeId.addressid)(AddressId.setter)} AND "addresstypeid" = ${Segment.paramSegment(compositeId.addresstypeid)(AddresstypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields) + DeleteBuilder("person.businessentityaddress", BusinessentityaddressFields.structure) } override def insert(unsaved: BusinessentityaddressRow): ZIO[ZConnection, Throwable, BusinessentityaddressRow] = { sql"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { streamingInsert(s"""COPY person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentityaddressRowUnsaved.text) } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.jdbcDecoder) + SelectBuilderSql("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentityaddressRow] = { sql"""select "businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate"::text from person.businessentityaddress""".query(BusinessentityaddressRow.jdbcDecoder).selectStream @@ -90,7 +90,7 @@ class BusinessentityaddressRepoImpl extends BusinessentityaddressRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "addressid" = ${Segment.paramSegment(compositeId.addressid)(AddressId.setter)} AND "addresstypeid" = ${Segment.paramSegment(compositeId.addresstypeid)(AddresstypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields, BusinessentityaddressRow.jdbcDecoder) + UpdateBuilder("person.businessentityaddress", BusinessentityaddressFields.structure, BusinessentityaddressRow.jdbcDecoder) } override def upsert(unsaved: BusinessentityaddressRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentityaddressRow]] = { sql"""insert into person.businessentityaddress("businessentityid", "addressid", "addresstypeid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala index 7f69a2e451..1e1e59faba 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressRepoMock.scala @@ -29,7 +29,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentityaddressFields.structure.fields, map) } override def insert(unsaved: BusinessentityaddressRow): ZIO[ZConnection, Throwable, BusinessentityaddressRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - SelectBuilderMock(BusinessentityaddressFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(BusinessentityaddressFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentityaddressRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class BusinessentityaddressRepoMock(toRow: Function1[BusinessentityaddressRowUns } } override def update: UpdateBuilder[BusinessentityaddressFields, BusinessentityaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentityaddressFields.structure.fields, map) } override def upsert(unsaved: BusinessentityaddressRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentityaddressRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala deleted file mode 100644 index 0b37a0b189..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentityaddress/BusinessentityaddressStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentityaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.addresstype.AddresstypeId -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentityaddressStructure[Row](val prefix: Option[String], val extract: Row => BusinessentityaddressRow, val merge: (Row, BusinessentityaddressRow) => Row) - extends Relation[BusinessentityaddressFields, BusinessentityaddressRow, Row] - with BusinessentityaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val addressid = new IdField[AddressId, Row](prefix, "addressid", None, Some("int4"))(x => extract(x).addressid, (row, value) => merge(row, extract(row).copy(addressid = value))) - override val addresstypeid = new IdField[AddresstypeId, Row](prefix, "addresstypeid", None, Some("int4"))(x => extract(x).addresstypeid, (row, value) => merge(row, extract(row).copy(addresstypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, addressid, addresstypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentityaddressRow, merge: (NewRow, BusinessentityaddressRow) => NewRow): BusinessentityaddressStructure[NewRow] = - new BusinessentityaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala index 883fa124b2..d4ff340ace 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.contacttype.ContacttypeId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait BusinessentitycontactFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait BusinessentitycontactFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BusinessentitycontactFields extends BusinessentitycontactStructure[BusinessentitycontactRow](None, identity, (_, x) => x) +object BusinessentitycontactFields { + val structure: Relation[BusinessentitycontactFields, BusinessentitycontactRow, BusinessentitycontactRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) + extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] { + + override val fields: BusinessentitycontactFields[Row] = new BusinessentitycontactFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.personid, fields.contacttypeid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala index 9fdc3ebc16..3e24d96f89 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoImpl.scala @@ -30,7 +30,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { sql"""delete from person.businessentitycontact where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "personid" = ${Segment.paramSegment(compositeId.personid)(BusinessentityId.setter)} AND "contacttypeid" = ${Segment.paramSegment(compositeId.contacttypeid)(ContacttypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields) + DeleteBuilder("person.businessentitycontact", BusinessentitycontactFields.structure) } override def insert(unsaved: BusinessentitycontactRow): ZIO[ZConnection, Throwable, BusinessentitycontactRow] = { sql"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") @@ -73,7 +73,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { streamingInsert(s"""COPY person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BusinessentitycontactRowUnsaved.text) } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.jdbcDecoder) + SelectBuilderSql("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentitycontactRow] = { sql"""select "businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate"::text from person.businessentitycontact""".query(BusinessentitycontactRow.jdbcDecoder).selectStream @@ -89,7 +89,7 @@ class BusinessentitycontactRepoImpl extends BusinessentitycontactRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "personid" = ${Segment.paramSegment(compositeId.personid)(BusinessentityId.setter)} AND "contacttypeid" = ${Segment.paramSegment(compositeId.contacttypeid)(ContacttypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields, BusinessentitycontactRow.jdbcDecoder) + UpdateBuilder("person.businessentitycontact", BusinessentitycontactFields.structure, BusinessentitycontactRow.jdbcDecoder) } override def upsert(unsaved: BusinessentitycontactRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentitycontactRow]] = { sql"""insert into person.businessentitycontact("businessentityid", "personid", "contacttypeid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala index 2e95c789f1..44bed34855 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactRepoMock.scala @@ -29,7 +29,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields, map) + DeleteBuilderMock(DeleteParams.empty, BusinessentitycontactFields.structure.fields, map) } override def insert(unsaved: BusinessentitycontactRow): ZIO[ZConnection, Throwable, BusinessentitycontactRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - SelectBuilderMock(BusinessentitycontactFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(BusinessentitycontactFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, BusinessentitycontactRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class BusinessentitycontactRepoMock(toRow: Function1[BusinessentitycontactRowUns } } override def update: UpdateBuilder[BusinessentitycontactFields, BusinessentitycontactRow] = { - UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields, map) + UpdateBuilderMock(UpdateParams.empty, BusinessentitycontactFields.structure.fields, map) } override def upsert(unsaved: BusinessentitycontactRow): ZIO[ZConnection, Throwable, UpdateResult[BusinessentitycontactRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala deleted file mode 100644 index bd08013e4b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/businessentitycontact/BusinessentitycontactStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package businessentitycontact - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.contacttype.ContacttypeId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class BusinessentitycontactStructure[Row](val prefix: Option[String], val extract: Row => BusinessentitycontactRow, val merge: (Row, BusinessentitycontactRow) => Row) - extends Relation[BusinessentitycontactFields, BusinessentitycontactRow, Row] - with BusinessentitycontactFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val personid = new IdField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, personid, contacttypeid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BusinessentitycontactRow, merge: (NewRow, BusinessentitycontactRow) => NewRow): BusinessentitycontactStructure[NewRow] = - new BusinessentitycontactStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala index 13178f020f..08a63694ec 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeFields.scala @@ -10,12 +10,34 @@ package contacttype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ContacttypeFields[Row] { val contacttypeid: IdField[ContacttypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ContacttypeFields extends ContacttypeStructure[ContacttypeRow](None, identity, (_, x) => x) +object ContacttypeFields { + val structure: Relation[ContacttypeFields, ContacttypeRow, ContacttypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) + extends Relation[ContacttypeFields, ContacttypeRow, Row] { + + override val fields: ContacttypeFields[Row] = new ContacttypeFields[Row] { + override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.contacttypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala index fdfaed7b76..578eae5df9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoImpl.scala @@ -28,7 +28,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { sql"""delete from person.contacttype where "contacttypeid" = ${Segment.paramSegment(contacttypeid)(ContacttypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilder("person.contacttype", ContacttypeFields) + DeleteBuilder("person.contacttype", ContacttypeFields.structure) } override def insert(unsaved: ContacttypeRow): ZIO[ZConnection, Throwable, ContacttypeRow] = { sql"""insert into person.contacttype("contacttypeid", "name", "modifieddate") @@ -69,7 +69,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { streamingInsert(s"""COPY person.contacttype("name", "contacttypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ContacttypeRowUnsaved.text) } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderSql("person.contacttype", ContacttypeFields, ContacttypeRow.jdbcDecoder) + SelectBuilderSql("person.contacttype", ContacttypeFields.structure, ContacttypeRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ContacttypeRow] = { sql"""select "contacttypeid", "name", "modifieddate"::text from person.contacttype""".query(ContacttypeRow.jdbcDecoder).selectStream @@ -88,7 +88,7 @@ class ContacttypeRepoImpl extends ContacttypeRepo { where "contacttypeid" = ${Segment.paramSegment(contacttypeid)(ContacttypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilder("person.contacttype", ContacttypeFields, ContacttypeRow.jdbcDecoder) + UpdateBuilder("person.contacttype", ContacttypeFields.structure, ContacttypeRow.jdbcDecoder) } override def upsert(unsaved: ContacttypeRow): ZIO[ZConnection, Throwable, UpdateResult[ContacttypeRow]] = { sql"""insert into person.contacttype("contacttypeid", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala index fc28985b51..19174e1cb1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeRepoMock.scala @@ -29,7 +29,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow ZIO.succeed(map.remove(contacttypeid).isDefined) } override def delete: DeleteBuilder[ContacttypeFields, ContacttypeRow] = { - DeleteBuilderMock(DeleteParams.empty, ContacttypeFields, map) + DeleteBuilderMock(DeleteParams.empty, ContacttypeFields.structure.fields, map) } override def insert(unsaved: ContacttypeRow): ZIO[ZConnection, Throwable, ContacttypeRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ContacttypeFields, ContacttypeRow] = { - SelectBuilderMock(ContacttypeFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ContacttypeFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ContacttypeRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ContacttypeRepoMock(toRow: Function1[ContacttypeRowUnsaved, ContacttypeRow } } override def update: UpdateBuilder[ContacttypeFields, ContacttypeRow] = { - UpdateBuilderMock(UpdateParams.empty, ContacttypeFields, map) + UpdateBuilderMock(UpdateParams.empty, ContacttypeFields.structure.fields, map) } override def upsert(unsaved: ContacttypeRow): ZIO[ZConnection, Throwable, UpdateResult[ContacttypeRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala deleted file mode 100644 index ead8cf9935..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/contacttype/ContacttypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package contacttype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ContacttypeStructure[Row](val prefix: Option[String], val extract: Row => ContacttypeRow, val merge: (Row, ContacttypeRow) => Row) - extends Relation[ContacttypeFields, ContacttypeRow, Row] - with ContacttypeFields[Row] { outer => - - override val contacttypeid = new IdField[ContacttypeId, Row](prefix, "contacttypeid", None, Some("int4"))(x => extract(x).contacttypeid, (row, value) => merge(row, extract(row).copy(contacttypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](contacttypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ContacttypeRow, merge: (NewRow, ContacttypeRow) => NewRow): ContacttypeStructure[NewRow] = - new ContacttypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala index 81df8b5160..ab09f11089 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionFields.scala @@ -10,12 +10,34 @@ package countryregion import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregionFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregionFields extends CountryregionStructure[CountryregionRow](None, identity, (_, x) => x) +object CountryregionFields { + val structure: Relation[CountryregionFields, CountryregionRow, CountryregionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) + extends Relation[CountryregionFields, CountryregionRow, Row] { + + override val fields: CountryregionFields[Row] = new CountryregionFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala index a471cfd802..eadcccbd64 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoImpl.scala @@ -28,7 +28,7 @@ class CountryregionRepoImpl extends CountryregionRepo { sql"""delete from person.countryregion where "countryregioncode" = ${Segment.paramSegment(countryregioncode)(CountryregionId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilder("person.countryregion", CountryregionFields) + DeleteBuilder("person.countryregion", CountryregionFields.structure) } override def insert(unsaved: CountryregionRow): ZIO[ZConnection, Throwable, CountryregionRow] = { sql"""insert into person.countryregion("countryregioncode", "name", "modifieddate") @@ -66,7 +66,7 @@ class CountryregionRepoImpl extends CountryregionRepo { streamingInsert(s"""COPY person.countryregion("countryregioncode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CountryregionRowUnsaved.text) } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderSql("person.countryregion", CountryregionFields, CountryregionRow.jdbcDecoder) + SelectBuilderSql("person.countryregion", CountryregionFields.structure, CountryregionRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CountryregionRow] = { sql"""select "countryregioncode", "name", "modifieddate"::text from person.countryregion""".query(CountryregionRow.jdbcDecoder).selectStream @@ -85,7 +85,7 @@ class CountryregionRepoImpl extends CountryregionRepo { where "countryregioncode" = ${Segment.paramSegment(countryregioncode)(CountryregionId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilder("person.countryregion", CountryregionFields, CountryregionRow.jdbcDecoder) + UpdateBuilder("person.countryregion", CountryregionFields.structure, CountryregionRow.jdbcDecoder) } override def upsert(unsaved: CountryregionRow): ZIO[ZConnection, Throwable, UpdateResult[CountryregionRow]] = { sql"""insert into person.countryregion("countryregioncode", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala index 18339336ed..43cfec2796 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionRepoMock.scala @@ -29,7 +29,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg ZIO.succeed(map.remove(countryregioncode).isDefined) } override def delete: DeleteBuilder[CountryregionFields, CountryregionRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregionFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregionFields.structure.fields, map) } override def insert(unsaved: CountryregionRow): ZIO[ZConnection, Throwable, CountryregionRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CountryregionFields, CountryregionRow] = { - SelectBuilderMock(CountryregionFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CountryregionFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CountryregionRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class CountryregionRepoMock(toRow: Function1[CountryregionRowUnsaved, Countryreg } } override def update: UpdateBuilder[CountryregionFields, CountryregionRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregionFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregionFields.structure.fields, map) } override def upsert(unsaved: CountryregionRow): ZIO[ZConnection, Throwable, UpdateResult[CountryregionRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala deleted file mode 100644 index 87d6ccbd31..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/countryregion/CountryregionStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package countryregion - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregionStructure[Row](val prefix: Option[String], val extract: Row => CountryregionRow, val merge: (Row, CountryregionRow) => Row) - extends Relation[CountryregionFields, CountryregionRow, Row] - with CountryregionFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregionRow, merge: (NewRow, CountryregionRow) => NewRow): CountryregionStructure[NewRow] = - new CountryregionStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala index 70ce831bfd..947814d7fe 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait EmailaddressFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -21,5 +23,27 @@ trait EmailaddressFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object EmailaddressFields extends EmailaddressStructure[EmailaddressRow](None, identity, (_, x) => x) +object EmailaddressFields { + val structure: Relation[EmailaddressFields, EmailaddressRow, EmailaddressRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) + extends Relation[EmailaddressFields, EmailaddressRow, Row] { + + override val fields: EmailaddressFields[Row] = new EmailaddressFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.emailaddressid, fields.emailaddress, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala index e2098294a5..bbca9f81af 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoImpl.scala @@ -30,7 +30,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { sql"""delete from person.emailaddress where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "emailaddressid" = ${Segment.paramSegment(compositeId.emailaddressid)(Setter.intSetter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilder("person.emailaddress", EmailaddressFields) + DeleteBuilder("person.emailaddress", EmailaddressFields.structure) } override def insert(unsaved: EmailaddressRow): ZIO[ZConnection, Throwable, EmailaddressRow] = { sql"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") @@ -76,7 +76,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { streamingInsert(s"""COPY person.emailaddress("businessentityid", "emailaddress", "emailaddressid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(EmailaddressRowUnsaved.text) } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderSql("person.emailaddress", EmailaddressFields, EmailaddressRow.jdbcDecoder) + SelectBuilderSql("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, EmailaddressRow] = { sql"""select "businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate"::text from person.emailaddress""".query(EmailaddressRow.jdbcDecoder).selectStream @@ -93,7 +93,7 @@ class EmailaddressRepoImpl extends EmailaddressRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "emailaddressid" = ${Segment.paramSegment(compositeId.emailaddressid)(Setter.intSetter)}""".update.map(_ > 0) } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilder("person.emailaddress", EmailaddressFields, EmailaddressRow.jdbcDecoder) + UpdateBuilder("person.emailaddress", EmailaddressFields.structure, EmailaddressRow.jdbcDecoder) } override def upsert(unsaved: EmailaddressRow): ZIO[ZConnection, Throwable, UpdateResult[EmailaddressRow]] = { sql"""insert into person.emailaddress("businessentityid", "emailaddressid", "emailaddress", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala index b09a7cf9e4..44bba183d4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressRepoMock.scala @@ -29,7 +29,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[EmailaddressFields, EmailaddressRow] = { - DeleteBuilderMock(DeleteParams.empty, EmailaddressFields, map) + DeleteBuilderMock(DeleteParams.empty, EmailaddressFields.structure.fields, map) } override def insert(unsaved: EmailaddressRow): ZIO[ZConnection, Throwable, EmailaddressRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[EmailaddressFields, EmailaddressRow] = { - SelectBuilderMock(EmailaddressFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(EmailaddressFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, EmailaddressRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class EmailaddressRepoMock(toRow: Function1[EmailaddressRowUnsaved, Emailaddress } } override def update: UpdateBuilder[EmailaddressFields, EmailaddressRow] = { - UpdateBuilderMock(UpdateParams.empty, EmailaddressFields, map) + UpdateBuilderMock(UpdateParams.empty, EmailaddressFields.structure.fields, map) } override def upsert(unsaved: EmailaddressRow): ZIO[ZConnection, Throwable, UpdateResult[EmailaddressRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala deleted file mode 100644 index 55cc11a4b2..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/emailaddress/EmailaddressStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package emailaddress - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class EmailaddressStructure[Row](val prefix: Option[String], val extract: Row => EmailaddressRow, val merge: (Row, EmailaddressRow) => Row) - extends Relation[EmailaddressFields, EmailaddressRow, Row] - with EmailaddressFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val emailaddressid = new IdField[Int, Row](prefix, "emailaddressid", None, Some("int4"))(x => extract(x).emailaddressid, (row, value) => merge(row, extract(row).copy(emailaddressid = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, emailaddressid, emailaddress, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => EmailaddressRow, merge: (NewRow, EmailaddressRow) => NewRow): EmailaddressStructure[NewRow] = - new EmailaddressStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala index 2d6eead3de..1318c25e43 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PasswordFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait PasswordFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PasswordFields extends PasswordStructure[PasswordRow](None, identity, (_, x) => x) +object PasswordFields { + val structure: Relation[PasswordFields, PasswordRow, PasswordRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) + extends Relation[PasswordFields, PasswordRow, Row] { + + override val fields: PasswordFields[Row] = new PasswordFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) + override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.passwordhash, fields.passwordsalt, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala index 7767a1c5f7..024f141e2d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoImpl.scala @@ -30,7 +30,7 @@ class PasswordRepoImpl extends PasswordRepo { sql"""delete from person.password where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilder("person.password", PasswordFields) + DeleteBuilder("person.password", PasswordFields.structure) } override def insert(unsaved: PasswordRow): ZIO[ZConnection, Throwable, PasswordRow] = { sql"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") @@ -73,7 +73,7 @@ class PasswordRepoImpl extends PasswordRepo { streamingInsert(s"""COPY person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PasswordRowUnsaved.text) } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderSql("person.password", PasswordFields, PasswordRow.jdbcDecoder) + SelectBuilderSql("person.password", PasswordFields.structure, PasswordRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PasswordRow] = { sql"""select "businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate"::text from person.password""".query(PasswordRow.jdbcDecoder).selectStream @@ -94,7 +94,7 @@ class PasswordRepoImpl extends PasswordRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilder("person.password", PasswordFields, PasswordRow.jdbcDecoder) + UpdateBuilder("person.password", PasswordFields.structure, PasswordRow.jdbcDecoder) } override def upsert(unsaved: PasswordRow): ZIO[ZConnection, Throwable, UpdateResult[PasswordRow]] = { sql"""insert into person.password("businessentityid", "passwordhash", "passwordsalt", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala index b57c247773..77ae02cf11 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordRepoMock.scala @@ -30,7 +30,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[PasswordFields, PasswordRow] = { - DeleteBuilderMock(DeleteParams.empty, PasswordFields, map) + DeleteBuilderMock(DeleteParams.empty, PasswordFields.structure.fields, map) } override def insert(unsaved: PasswordRow): ZIO[ZConnection, Throwable, PasswordRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PasswordFields, PasswordRow] = { - SelectBuilderMock(PasswordFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PasswordFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PasswordRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class PasswordRepoMock(toRow: Function1[PasswordRowUnsaved, PasswordRow], } } override def update: UpdateBuilder[PasswordFields, PasswordRow] = { - UpdateBuilderMock(UpdateParams.empty, PasswordFields, map) + UpdateBuilderMock(UpdateParams.empty, PasswordFields.structure.fields, map) } override def upsert(unsaved: PasswordRow): ZIO[ZConnection, Throwable, UpdateResult[PasswordRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala deleted file mode 100644 index 60b557bdc7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/password/PasswordStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package password - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PasswordStructure[Row](val prefix: Option[String], val extract: Row => PasswordRow, val merge: (Row, PasswordRow) => Row) - extends Relation[PasswordFields, PasswordRow, Row] - with PasswordFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val passwordhash = new Field[/* max 128 chars */ String, Row](prefix, "passwordhash", None, None)(x => extract(x).passwordhash, (row, value) => merge(row, extract(row).copy(passwordhash = value))) - override val passwordsalt = new Field[/* max 10 chars */ String, Row](prefix, "passwordsalt", None, None)(x => extract(x).passwordsalt, (row, value) => merge(row, extract(row).copy(passwordsalt = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, passwordhash, passwordsalt, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PasswordRow, merge: (NewRow, PasswordRow) => NewRow): PasswordStructure[NewRow] = - new PasswordStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonFields.scala index 0119c6291d..ca8795be9b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonFields.scala @@ -15,8 +15,10 @@ import adventureworks.public.Name import adventureworks.public.NameStyle import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -33,5 +35,35 @@ trait PersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonFields extends PersonStructure[PersonRow](None, identity, (_, x) => x) +object PersonFields { + val structure: Relation[PersonFields, PersonRow, PersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) + extends Relation[PersonFields, PersonRow, Row] { + + override val fields: PersonFields[Row] = new PersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) + override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.persontype, fields.namestyle, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.emailpromotion, fields.additionalcontactinfo, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala index 51947c5385..9725c81dc5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoImpl.scala @@ -34,7 +34,7 @@ class PersonRepoImpl extends PersonRepo { sql"""delete from person.person where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilder("person.person", PersonFields) + DeleteBuilder("person.person", PersonFields.structure) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { sql"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") @@ -91,7 +91,7 @@ class PersonRepoImpl extends PersonRepo { streamingInsert(s"""COPY person.person("businessentityid", "persontype", "title", "firstname", "middlename", "lastname", "suffix", "additionalcontactinfo", "demographics", "namestyle", "emailpromotion", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonRowUnsaved.text) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderSql("person.person", PersonFields, PersonRow.jdbcDecoder) + SelectBuilderSql("person.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { sql"""select "businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate"::text from person.person""".query(PersonRow.jdbcDecoder).selectStream @@ -120,7 +120,7 @@ class PersonRepoImpl extends PersonRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilder("person.person", PersonFields, PersonRow.jdbcDecoder) + UpdateBuilder("person.person", PersonFields.structure, PersonRow.jdbcDecoder) } override def upsert(unsaved: PersonRow): ZIO[ZConnection, Throwable, UpdateResult[PersonRow]] = { sql"""insert into person.person("businessentityid", "persontype", "namestyle", "title", "firstname", "middlename", "lastname", "suffix", "emailpromotion", "additionalcontactinfo", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala index 7a84e79ea0..21c76439d1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonRepoMock.scala @@ -30,7 +30,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[PersonFields, PersonRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonFields.structure.fields, map) } override def insert(unsaved: PersonRow): ZIO[ZConnection, Throwable, PersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonFields, PersonRow] = { - SelectBuilderMock(PersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class PersonRepoMock(toRow: Function1[PersonRowUnsaved, PersonRow], } } override def update: UpdateBuilder[PersonFields, PersonRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonFields.structure.fields, map) } override def upsert(unsaved: PersonRow): ZIO[ZConnection, Throwable, UpdateResult[PersonRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala deleted file mode 100644 index 123311e8d4..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/person/PersonStructure.scala +++ /dev/null @@ -1,46 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package person - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.NameStyle -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PersonStructure[Row](val prefix: Option[String], val extract: Row => PersonRow, val merge: (Row, PersonRow) => Row) - extends Relation[PersonFields, PersonRow, Row] - with PersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val persontype = new Field[/* bpchar, max 2 chars */ String, Row](prefix, "persontype", None, Some("bpchar"))(x => extract(x).persontype, (row, value) => merge(row, extract(row).copy(persontype = value))) - override val namestyle = new Field[NameStyle, Row](prefix, "namestyle", None, Some("bool"))(x => extract(x).namestyle, (row, value) => merge(row, extract(row).copy(namestyle = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, Some("varchar"))(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, Some("varchar"))(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, Some("varchar"))(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, Some("int4"))(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val additionalcontactinfo = new OptField[TypoXml, Row](prefix, "additionalcontactinfo", None, Some("xml"))(x => extract(x).additionalcontactinfo, (row, value) => merge(row, extract(row).copy(additionalcontactinfo = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, persontype, namestyle, title, firstname, middlename, lastname, suffix, emailpromotion, additionalcontactinfo, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonRow, merge: (NewRow, PersonRow) => NewRow): PersonStructure[NewRow] = - new PersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala index f297954278..5795d7246d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.person.phonenumbertype.PhonenumbertypeId import adventureworks.public.Phone import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersonphoneFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,26 @@ trait PersonphoneFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersonphoneFields extends PersonphoneStructure[PersonphoneRow](None, identity, (_, x) => x) +object PersonphoneFields { + val structure: Relation[PersonphoneFields, PersonphoneRow, PersonphoneRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) + extends Relation[PersonphoneFields, PersonphoneRow, Row] { + + override val fields: PersonphoneFields[Row] = new PersonphoneFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.phonenumber, fields.phonenumbertypeid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala index f7e81113ae..c229c2be49 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoImpl.scala @@ -30,7 +30,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { sql"""delete from person.personphone where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "phonenumber" = ${Segment.paramSegment(compositeId.phonenumber)(Phone.setter)} AND "phonenumbertypeid" = ${Segment.paramSegment(compositeId.phonenumbertypeid)(PhonenumbertypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilder("person.personphone", PersonphoneFields) + DeleteBuilder("person.personphone", PersonphoneFields.structure) } override def insert(unsaved: PersonphoneRow): ZIO[ZConnection, Throwable, PersonphoneRow] = { sql"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") @@ -69,7 +69,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { streamingInsert(s"""COPY person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersonphoneRowUnsaved.text) } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderSql("person.personphone", PersonphoneFields, PersonphoneRow.jdbcDecoder) + SelectBuilderSql("person.personphone", PersonphoneFields.structure, PersonphoneRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersonphoneRow] = { sql"""select "businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate"::text from person.personphone""".query(PersonphoneRow.jdbcDecoder).selectStream @@ -84,7 +84,7 @@ class PersonphoneRepoImpl extends PersonphoneRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "phonenumber" = ${Segment.paramSegment(compositeId.phonenumber)(Phone.setter)} AND "phonenumbertypeid" = ${Segment.paramSegment(compositeId.phonenumbertypeid)(PhonenumbertypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilder("person.personphone", PersonphoneFields, PersonphoneRow.jdbcDecoder) + UpdateBuilder("person.personphone", PersonphoneFields.structure, PersonphoneRow.jdbcDecoder) } override def upsert(unsaved: PersonphoneRow): ZIO[ZConnection, Throwable, UpdateResult[PersonphoneRow]] = { sql"""insert into person.personphone("businessentityid", "phonenumber", "phonenumbertypeid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala index 6a04df298f..8f05c5ea14 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneRepoMock.scala @@ -29,7 +29,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersonphoneFields, PersonphoneRow] = { - DeleteBuilderMock(DeleteParams.empty, PersonphoneFields, map) + DeleteBuilderMock(DeleteParams.empty, PersonphoneFields.structure.fields, map) } override def insert(unsaved: PersonphoneRow): ZIO[ZConnection, Throwable, PersonphoneRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersonphoneFields, PersonphoneRow] = { - SelectBuilderMock(PersonphoneFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersonphoneFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersonphoneRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class PersonphoneRepoMock(toRow: Function1[PersonphoneRowUnsaved, PersonphoneRow } } override def update: UpdateBuilder[PersonphoneFields, PersonphoneRow] = { - UpdateBuilderMock(UpdateParams.empty, PersonphoneFields, map) + UpdateBuilderMock(UpdateParams.empty, PersonphoneFields.structure.fields, map) } override def upsert(unsaved: PersonphoneRow): ZIO[ZConnection, Throwable, UpdateResult[PersonphoneRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala deleted file mode 100644 index bc16c6660c..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/personphone/PersonphoneStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package personphone - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.person.phonenumbertype.PhonenumbertypeId -import adventureworks.public.Phone -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersonphoneStructure[Row](val prefix: Option[String], val extract: Row => PersonphoneRow, val merge: (Row, PersonphoneRow) => Row) - extends Relation[PersonphoneFields, PersonphoneRow, Row] - with PersonphoneFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val phonenumber = new IdField[Phone, Row](prefix, "phonenumber", None, Some("varchar"))(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, phonenumber, phonenumbertypeid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersonphoneRow, merge: (NewRow, PersonphoneRow) => NewRow): PersonphoneStructure[NewRow] = - new PersonphoneStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala index 498a3475ef..6d7dcb3ee7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeFields.scala @@ -10,12 +10,34 @@ package phonenumbertype import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PhonenumbertypeFields[Row] { val phonenumbertypeid: IdField[PhonenumbertypeId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PhonenumbertypeFields extends PhonenumbertypeStructure[PhonenumbertypeRow](None, identity, (_, x) => x) +object PhonenumbertypeFields { + val structure: Relation[PhonenumbertypeFields, PhonenumbertypeRow, PhonenumbertypeRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) + extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] { + + override val fields: PhonenumbertypeFields[Row] = new PhonenumbertypeFields[Row] { + override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.phonenumbertypeid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala index 6e18323d60..6091673443 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoImpl.scala @@ -28,7 +28,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { sql"""delete from person.phonenumbertype where "phonenumbertypeid" = ${Segment.paramSegment(phonenumbertypeid)(PhonenumbertypeId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields) + DeleteBuilder("person.phonenumbertype", PhonenumbertypeFields.structure) } override def insert(unsaved: PhonenumbertypeRow): ZIO[ZConnection, Throwable, PhonenumbertypeRow] = { sql"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") @@ -69,7 +69,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { streamingInsert(s"""COPY person.phonenumbertype("name", "phonenumbertypeid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PhonenumbertypeRowUnsaved.text) } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.jdbcDecoder) + SelectBuilderSql("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PhonenumbertypeRow] = { sql"""select "phonenumbertypeid", "name", "modifieddate"::text from person.phonenumbertype""".query(PhonenumbertypeRow.jdbcDecoder).selectStream @@ -88,7 +88,7 @@ class PhonenumbertypeRepoImpl extends PhonenumbertypeRepo { where "phonenumbertypeid" = ${Segment.paramSegment(phonenumbertypeid)(PhonenumbertypeId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields, PhonenumbertypeRow.jdbcDecoder) + UpdateBuilder("person.phonenumbertype", PhonenumbertypeFields.structure, PhonenumbertypeRow.jdbcDecoder) } override def upsert(unsaved: PhonenumbertypeRow): ZIO[ZConnection, Throwable, UpdateResult[PhonenumbertypeRow]] = { sql"""insert into person.phonenumbertype("phonenumbertypeid", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala index 4435d2472b..33a028da66 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeRepoMock.scala @@ -29,7 +29,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen ZIO.succeed(map.remove(phonenumbertypeid).isDefined) } override def delete: DeleteBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields, map) + DeleteBuilderMock(DeleteParams.empty, PhonenumbertypeFields.structure.fields, map) } override def insert(unsaved: PhonenumbertypeRow): ZIO[ZConnection, Throwable, PhonenumbertypeRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - SelectBuilderMock(PhonenumbertypeFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PhonenumbertypeFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PhonenumbertypeRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class PhonenumbertypeRepoMock(toRow: Function1[PhonenumbertypeRowUnsaved, Phonen } } override def update: UpdateBuilder[PhonenumbertypeFields, PhonenumbertypeRow] = { - UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields, map) + UpdateBuilderMock(UpdateParams.empty, PhonenumbertypeFields.structure.fields, map) } override def upsert(unsaved: PhonenumbertypeRow): ZIO[ZConnection, Throwable, UpdateResult[PhonenumbertypeRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala deleted file mode 100644 index d97624344a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/phonenumbertype/PhonenumbertypeStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package phonenumbertype - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PhonenumbertypeStructure[Row](val prefix: Option[String], val extract: Row => PhonenumbertypeRow, val merge: (Row, PhonenumbertypeRow) => Row) - extends Relation[PhonenumbertypeFields, PhonenumbertypeRow, Row] - with PhonenumbertypeFields[Row] { outer => - - override val phonenumbertypeid = new IdField[PhonenumbertypeId, Row](prefix, "phonenumbertypeid", None, Some("int4"))(x => extract(x).phonenumbertypeid, (row, value) => merge(row, extract(row).copy(phonenumbertypeid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](phonenumbertypeid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PhonenumbertypeRow, merge: (NewRow, PhonenumbertypeRow) => NewRow): PhonenumbertypeStructure[NewRow] = - new PhonenumbertypeStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala index e08e645ce9..87e8c80487 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait StateprovinceFields[Row] { val stateprovinceid: IdField[StateprovinceId, Row] @@ -26,5 +28,30 @@ trait StateprovinceFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StateprovinceFields extends StateprovinceStructure[StateprovinceRow](None, identity, (_, x) => x) +object StateprovinceFields { + val structure: Relation[StateprovinceFields, StateprovinceRow, StateprovinceRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) + extends Relation[StateprovinceFields, StateprovinceRow, Row] { + + override val fields: StateprovinceFields[Row] = new StateprovinceFields[Row] { + override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.countryregioncode, fields.isonlystateprovinceflag, fields.name, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala index 0239b3e196..77cf89af00 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoImpl.scala @@ -33,7 +33,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { sql"""delete from person.stateprovince where "stateprovinceid" = ${Segment.paramSegment(stateprovinceid)(StateprovinceId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilder("person.stateprovince", StateprovinceFields) + DeleteBuilder("person.stateprovince", StateprovinceFields.structure) } override def insert(unsaved: StateprovinceRow): ZIO[ZConnection, Throwable, StateprovinceRow] = { sql"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") @@ -85,7 +85,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { streamingInsert(s"""COPY person.stateprovince("stateprovincecode", "countryregioncode", "name", "territoryid", "stateprovinceid", "isonlystateprovinceflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(StateprovinceRowUnsaved.text) } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderSql("person.stateprovince", StateprovinceFields, StateprovinceRow.jdbcDecoder) + SelectBuilderSql("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, StateprovinceRow] = { sql"""select "stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate"::text from person.stateprovince""".query(StateprovinceRow.jdbcDecoder).selectStream @@ -109,7 +109,7 @@ class StateprovinceRepoImpl extends StateprovinceRepo { where "stateprovinceid" = ${Segment.paramSegment(stateprovinceid)(StateprovinceId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilder("person.stateprovince", StateprovinceFields, StateprovinceRow.jdbcDecoder) + UpdateBuilder("person.stateprovince", StateprovinceFields.structure, StateprovinceRow.jdbcDecoder) } override def upsert(unsaved: StateprovinceRow): ZIO[ZConnection, Throwable, UpdateResult[StateprovinceRow]] = { sql"""insert into person.stateprovince("stateprovinceid", "stateprovincecode", "countryregioncode", "isonlystateprovinceflag", "name", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala index b7032733c8..e296079540 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceRepoMock.scala @@ -29,7 +29,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi ZIO.succeed(map.remove(stateprovinceid).isDefined) } override def delete: DeleteBuilder[StateprovinceFields, StateprovinceRow] = { - DeleteBuilderMock(DeleteParams.empty, StateprovinceFields, map) + DeleteBuilderMock(DeleteParams.empty, StateprovinceFields.structure.fields, map) } override def insert(unsaved: StateprovinceRow): ZIO[ZConnection, Throwable, StateprovinceRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[StateprovinceFields, StateprovinceRow] = { - SelectBuilderMock(StateprovinceFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(StateprovinceFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, StateprovinceRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class StateprovinceRepoMock(toRow: Function1[StateprovinceRowUnsaved, Stateprovi } } override def update: UpdateBuilder[StateprovinceFields, StateprovinceRow] = { - UpdateBuilderMock(UpdateParams.empty, StateprovinceFields, map) + UpdateBuilderMock(UpdateParams.empty, StateprovinceFields.structure.fields, map) } override def upsert(unsaved: StateprovinceRow): ZIO[ZConnection, Throwable, UpdateResult[StateprovinceRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala deleted file mode 100644 index 269d64f176..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/stateprovince/StateprovinceStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package stateprovince - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class StateprovinceStructure[Row](val prefix: Option[String], val extract: Row => StateprovinceRow, val merge: (Row, StateprovinceRow) => Row) - extends Relation[StateprovinceFields, StateprovinceRow, Row] - with StateprovinceFields[Row] { outer => - - override val stateprovinceid = new IdField[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, Some("bpchar"))(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, Some("bool"))(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, countryregioncode, isonlystateprovinceflag, name, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StateprovinceRow, merge: (NewRow, StateprovinceRow) => NewRow): StateprovinceStructure[NewRow] = - new StateprovinceStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala index c138112fbb..1df0730075 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VadditionalcontactinfoViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,39 @@ trait VadditionalcontactinfoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VadditionalcontactinfoViewFields extends VadditionalcontactinfoViewStructure[VadditionalcontactinfoViewRow](None, identity, (_, x) => x) +object VadditionalcontactinfoViewFields { + val structure: Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, VadditionalcontactinfoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) + extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] { + + override val fields: VadditionalcontactinfoViewFields[Row] = new VadditionalcontactinfoViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) + override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) + override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) + override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) + override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) + override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) + override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) + override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.firstname, fields.middlename, fields.lastname, fields.telephonenumber, fields.telephonespecialinstructions, fields.street, fields.city, fields.stateprovince, fields.postalcode, fields.countryregion, fields.homeaddressspecialinstructions, fields.emailaddress, fields.emailspecialinstructions, fields.emailtelephonenumber, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala index ee09c52945..594a3bb5a4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VadditionalcontactinfoViewRepoImpl extends VadditionalcontactinfoViewRepo { override def select: SelectBuilder[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow] = { - SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow.jdbcDecoder) + SelectBuilderSql("person.vadditionalcontactinfo", VadditionalcontactinfoViewFields.structure, VadditionalcontactinfoViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VadditionalcontactinfoViewRow] = { sql"""select "businessentityid", "firstname", "middlename", "lastname", "telephonenumber", "telephonespecialinstructions", "street", "city", "stateprovince", "postalcode", "countryregion", "homeaddressspecialinstructions", "emailaddress", "emailspecialinstructions", "emailtelephonenumber", "rowguid", "modifieddate"::text from person.vadditionalcontactinfo""".query(VadditionalcontactinfoViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala deleted file mode 100644 index 41f1bb48d2..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vadditionalcontactinfo/VadditionalcontactinfoViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vadditionalcontactinfo - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VadditionalcontactinfoViewStructure[Row](val prefix: Option[String], val extract: Row => VadditionalcontactinfoViewRow, val merge: (Row, VadditionalcontactinfoViewRow) => Row) - extends Relation[VadditionalcontactinfoViewFields, VadditionalcontactinfoViewRow, Row] - with VadditionalcontactinfoViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val telephonenumber = new OptField[TypoXml, Row](prefix, "telephonenumber", None, None)(x => extract(x).telephonenumber, (row, value) => merge(row, extract(row).copy(telephonenumber = value))) - override val telephonespecialinstructions = new OptField[String, Row](prefix, "telephonespecialinstructions", None, None)(x => extract(x).telephonespecialinstructions, (row, value) => merge(row, extract(row).copy(telephonespecialinstructions = value))) - override val street = new OptField[TypoXml, Row](prefix, "street", None, None)(x => extract(x).street, (row, value) => merge(row, extract(row).copy(street = value))) - override val city = new OptField[TypoXml, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovince = new OptField[TypoXml, Row](prefix, "stateprovince", None, None)(x => extract(x).stateprovince, (row, value) => merge(row, extract(row).copy(stateprovince = value))) - override val postalcode = new OptField[TypoXml, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregion = new OptField[TypoXml, Row](prefix, "countryregion", None, None)(x => extract(x).countryregion, (row, value) => merge(row, extract(row).copy(countryregion = value))) - override val homeaddressspecialinstructions = new OptField[TypoXml, Row](prefix, "homeaddressspecialinstructions", None, None)(x => extract(x).homeaddressspecialinstructions, (row, value) => merge(row, extract(row).copy(homeaddressspecialinstructions = value))) - override val emailaddress = new OptField[TypoXml, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailspecialinstructions = new OptField[String, Row](prefix, "emailspecialinstructions", None, None)(x => extract(x).emailspecialinstructions, (row, value) => merge(row, extract(row).copy(emailspecialinstructions = value))) - override val emailtelephonenumber = new OptField[TypoXml, Row](prefix, "emailtelephonenumber", None, None)(x => extract(x).emailtelephonenumber, (row, value) => merge(row, extract(row).copy(emailtelephonenumber = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, firstname, middlename, lastname, telephonenumber, telephonespecialinstructions, street, city, stateprovince, postalcode, countryregion, homeaddressspecialinstructions, emailaddress, emailspecialinstructions, emailtelephonenumber, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VadditionalcontactinfoViewRow, merge: (NewRow, VadditionalcontactinfoViewRow) => NewRow): VadditionalcontactinfoViewStructure[NewRow] = - new VadditionalcontactinfoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala index 0f86db826d..2ab1ff2c1c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVFields.scala @@ -13,6 +13,8 @@ import adventureworks.public.Flag import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VstateprovincecountryregionMVFields[Row] { val stateprovinceid: Field[StateprovinceId, Row] @@ -23,5 +25,29 @@ trait VstateprovincecountryregionMVFields[Row] { val countryregioncode: Field[CountryregionId, Row] val countryregionname: Field[Name, Row] } -object VstateprovincecountryregionMVFields extends VstateprovincecountryregionMVStructure[VstateprovincecountryregionMVRow](None, identity, (_, x) => x) +object VstateprovincecountryregionMVFields { + val structure: Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, VstateprovincecountryregionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) + extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] { + + override val fields: VstateprovincecountryregionMVFields[Row] = new VstateprovincecountryregionMVFields[Row] { + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) + override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.stateprovinceid, fields.stateprovincecode, fields.isonlystateprovinceflag, fields.stateprovincename, fields.territoryid, fields.countryregioncode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala index 711490e7cd..8b77c3c035 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VstateprovincecountryregionMVRepoImpl extends VstateprovincecountryregionMVRepo { override def select: SelectBuilder[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow] = { - SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow.jdbcDecoder) + SelectBuilderSql("person.vstateprovincecountryregion", VstateprovincecountryregionMVFields.structure, VstateprovincecountryregionMVRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VstateprovincecountryregionMVRow] = { sql"""select "stateprovinceid", "stateprovincecode", "isonlystateprovinceflag", "stateprovincename", "territoryid", "countryregioncode", "countryregionname" from person.vstateprovincecountryregion""".query(VstateprovincecountryregionMVRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala deleted file mode 100644 index 13c82bdeb1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/person/vstateprovincecountryregion/VstateprovincecountryregionMVStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package person -package vstateprovincecountryregion - -import adventureworks.person.countryregion.CountryregionId -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Flag -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VstateprovincecountryregionMVStructure[Row](val prefix: Option[String], val extract: Row => VstateprovincecountryregionMVRow, val merge: (Row, VstateprovincecountryregionMVRow) => Row) - extends Relation[VstateprovincecountryregionMVFields, VstateprovincecountryregionMVRow, Row] - with VstateprovincecountryregionMVFields[Row] { outer => - - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val stateprovincecode = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "stateprovincecode", None, None)(x => extract(x).stateprovincecode, (row, value) => merge(row, extract(row).copy(stateprovincecode = value))) - override val isonlystateprovinceflag = new Field[Flag, Row](prefix, "isonlystateprovinceflag", None, None)(x => extract(x).isonlystateprovinceflag, (row, value) => merge(row, extract(row).copy(isonlystateprovinceflag = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](stateprovinceid, stateprovincecode, isonlystateprovinceflag, stateprovincename, territoryid, countryregioncode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstateprovincecountryregionMVRow, merge: (NewRow, VstateprovincecountryregionMVRow) => NewRow): VstateprovincecountryregionMVStructure[NewRow] = - new VstateprovincecountryregionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala index 16f06fd6db..3a82b821f7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BomViewFields[Row] { val id: Field[Int, Row] @@ -26,5 +28,32 @@ trait BomViewFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BomViewFields extends BomViewStructure[BomViewRow](None, identity, (_, x) => x) +object BomViewFields { + val structure: Relation[BomViewFields, BomViewRow, BomViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) + extends Relation[BomViewFields, BomViewRow, Row] { + + override val fields: BomViewFields[Row] = new BomViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala index 2af27dc410..aefc877509 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class BomViewRepoImpl extends BomViewRepo { override def select: SelectBuilder[BomViewFields, BomViewRow] = { - SelectBuilderSql("pr.bom", BomViewFields, BomViewRow.jdbcDecoder) + SelectBuilderSql("pr.bom", BomViewFields.structure, BomViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BomViewRow] = { sql"""select "id", "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text from pr.bom""".query(BomViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala deleted file mode 100644 index 2402b93eab..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/bom/BomViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package bom - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BomViewStructure[Row](val prefix: Option[String], val extract: Row => BomViewRow, val merge: (Row, BomViewRow) => Row) - extends Relation[BomViewFields, BomViewRow, Row] - with BomViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val billofmaterialsid = new Field[Int, Row](prefix, "billofmaterialsid", None, None)(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, None)(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, None)(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, None)(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, None)(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BomViewRow, merge: (NewRow, BomViewRow) => NewRow): BomViewStructure[NewRow] = - new BomViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala index 78024cc012..cb2b6e6f8a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.culture.CultureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CultureId, Row] @@ -18,5 +20,26 @@ trait CViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala index 8f970d1b55..50dd1ce549 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("pr.c", CViewFields, CViewRow.jdbcDecoder) + SelectBuilderSql("pr.c", CViewFields.structure, CViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CViewRow] = { sql"""select "id", "cultureid", "name", "modifieddate"::text from pr.c""".query(CViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala deleted file mode 100644 index 126337859a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/c/CViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CultureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala index 943ce0ca8b..9593239b2f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewFields.scala @@ -15,7 +15,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.document.DocumentId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DViewFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object DViewFields extends DViewStructure[DViewRow](None, identity, (_, x) => x) +object DViewFields { + val structure: Relation[DViewFields, DViewRow, DViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) + extends Relation[DViewFields, DViewRow, Row] { + + override val fields: DViewFields[Row] = new DViewFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala index 481c5b02cf..444fdd210b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class DViewRepoImpl extends DViewRepo { override def select: SelectBuilder[DViewFields, DViewRow] = { - SelectBuilderSql("pr.d", DViewFields, DViewRow.jdbcDecoder) + SelectBuilderSql("pr.d", DViewFields.structure, DViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, DViewRow] = { sql"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" from pr.d""".query(DViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala deleted file mode 100644 index d6d8e8a044..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/d/DViewStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package d - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.document.DocumentId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DViewStructure[Row](val prefix: Option[String], val extract: Row => DViewRow, val merge: (Row, DViewRow) => Row) - extends Relation[DViewFields, DViewRow, Row] - with DViewFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, None)(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, None)(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, None)(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, None)(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, None)(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DViewRow, merge: (NewRow, DViewRow) => NewRow): DViewStructure[NewRow] = - new DViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala index 1842ac7f71..25b815cfc5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import adventureworks.production.illustration.IllustrationId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IViewFields[Row] { val id: Field[IllustrationId, Row] @@ -19,5 +21,26 @@ trait IViewFields[Row] { val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IViewFields extends IViewStructure[IViewRow](None, identity, (_, x) => x) +object IViewFields { + val structure: Relation[IViewFields, IViewRow, IViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) + extends Relation[IViewFields, IViewRow, Row] { + + override val fields: IViewFields[Row] = new IViewFields[Row] { + override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala index 09a5bd7ecd..33801cf97e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class IViewRepoImpl extends IViewRepo { override def select: SelectBuilder[IViewFields, IViewRow] = { - SelectBuilderSql("pr.i", IViewFields, IViewRow.jdbcDecoder) + SelectBuilderSql("pr.i", IViewFields.structure, IViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, IViewRow] = { sql"""select "id", "illustrationid", "diagram", "modifieddate"::text from pr.i""".query(IViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala deleted file mode 100644 index 7b45575a14..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/i/IViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package i - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import adventureworks.production.illustration.IllustrationId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IViewStructure[Row](val prefix: Option[String], val extract: Row => IViewRow, val merge: (Row, IViewRow) => Row) - extends Relation[IViewFields, IViewRow, Row] - with IViewFields[Row] { outer => - - override val id = new Field[IllustrationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, None)(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IViewRow, merge: (NewRow, IViewRow) => NewRow): IViewStructure[NewRow] = - new IViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala index acb810ccab..77032968a6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.location.LocationId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait LViewFields[Row] { val id: Field[LocationId, Row] @@ -20,5 +22,28 @@ trait LViewFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LViewFields extends LViewStructure[LViewRow](None, identity, (_, x) => x) +object LViewFields { + val structure: Relation[LViewFields, LViewRow, LViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) + extends Relation[LViewFields, LViewRow, Row] { + + override val fields: LViewFields[Row] = new LViewFields[Row] { + override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala index 26d20e26a7..c1e175ed36 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class LViewRepoImpl extends LViewRepo { override def select: SelectBuilder[LViewFields, LViewRow] = { - SelectBuilderSql("pr.l", LViewFields, LViewRow.jdbcDecoder) + SelectBuilderSql("pr.l", LViewFields.structure, LViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, LViewRow] = { sql"""select "id", "locationid", "name", "costrate", "availability", "modifieddate"::text from pr.l""".query(LViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala deleted file mode 100644 index 72d2c67f72..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/l/LViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package l - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.location.LocationId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class LViewStructure[Row](val prefix: Option[String], val extract: Row => LViewRow, val merge: (Row, LViewRow) => Row) - extends Relation[LViewFields, LViewRow, Row] - with LViewFields[Row] { outer => - - override val id = new Field[LocationId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, None)(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, None)(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LViewRow, merge: (NewRow, LViewRow) => NewRow): LViewStructure[NewRow] = - new LViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala index eee5a6bf77..b7307dffeb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewFields.scala @@ -17,7 +17,9 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PViewFields[Row] { val id: Field[ProductId, Row] @@ -47,5 +49,48 @@ trait PViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PViewFields extends PViewStructure[PViewRow](None, identity, (_, x) => x) +object PViewFields { + val structure: Relation[PViewFields, PViewRow, PViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) + extends Relation[PViewFields, PViewRow, Row] { + + override val fields: PViewFields[Row] = new PViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala index 1bd5109b24..f0482c54bd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PViewRepoImpl extends PViewRepo { override def select: SelectBuilder[PViewFields, PViewRow] = { - SelectBuilderSql("pr.p", PViewFields, PViewRow.jdbcDecoder) + SelectBuilderSql("pr.p", PViewFields.structure, PViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PViewRow] = { sql"""select "id", "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text from pr.p""".query(PViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala deleted file mode 100644 index b249873603..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/p/PViewStructure.scala +++ /dev/null @@ -1,60 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package p - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PViewStructure[Row](val prefix: Option[String], val extract: Row => PViewRow, val merge: (Row, PViewRow) => Row) - extends Relation[PViewFields, PViewRow, Row] - with PViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, None)(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, None)(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, None)(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, None)(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, None)(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, None)(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, None)(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, None)(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, None)(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), None)(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), None)(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), None)(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PViewRow, merge: (NewRow, PViewRow) => NewRow): PViewStructure[NewRow] = - new PViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala index f9a40218a3..72d5f4b748 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PcViewFields[Row] { val id: Field[ProductcategoryId, Row] @@ -20,5 +22,27 @@ trait PcViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PcViewFields extends PcViewStructure[PcViewRow](None, identity, (_, x) => x) +object PcViewFields { + val structure: Relation[PcViewFields, PcViewRow, PcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) + extends Relation[PcViewFields, PcViewRow, Row] { + + override val fields: PcViewFields[Row] = new PcViewFields[Row] { + override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala index 14166c967e..386d4c8da0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PcViewRepoImpl extends PcViewRepo { override def select: SelectBuilder[PcViewFields, PcViewRow] = { - SelectBuilderSql("pr.pc", PcViewFields, PcViewRow.jdbcDecoder) + SelectBuilderSql("pr.pc", PcViewFields.structure, PcViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PcViewRow] = { sql"""select "id", "productcategoryid", "name", "rowguid", "modifieddate"::text from pr.pc""".query(PcViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala deleted file mode 100644 index 8e7f82241e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pc/PcViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PcViewStructure[Row](val prefix: Option[String], val extract: Row => PcViewRow, val merge: (Row, PcViewRow) => Row) - extends Relation[PcViewFields, PcViewRow, Row] - with PcViewFields[Row] { outer => - - override val id = new Field[ProductcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PcViewRow, merge: (NewRow, PcViewRow) => NewRow): PcViewStructure[NewRow] = - new PcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala index 01456464b1..5daae96509 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewFields.scala @@ -10,7 +10,9 @@ package pch import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PchViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PchViewFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PchViewFields extends PchViewStructure[PchViewRow](None, identity, (_, x) => x) +object PchViewFields { + val structure: Relation[PchViewFields, PchViewRow, PchViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) + extends Relation[PchViewFields, PchViewRow, Row] { + + override val fields: PchViewFields[Row] = new PchViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala index e7622372b9..bbde148c1c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PchViewRepoImpl extends PchViewRepo { override def select: SelectBuilder[PchViewFields, PchViewRow] = { - SelectBuilderSql("pr.pch", PchViewFields, PchViewRow.jdbcDecoder) + SelectBuilderSql("pr.pch", PchViewFields.structure, PchViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PchViewRow] = { sql"""select "id", "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text from pr.pch""".query(PchViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala deleted file mode 100644 index 6d321e3d13..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pch/PchViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pch - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PchViewStructure[Row](val prefix: Option[String], val extract: Row => PchViewRow, val merge: (Row, PchViewRow) => Row) - extends Relation[PchViewFields, PchViewRow, Row] - with PchViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, None)(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PchViewRow, merge: (NewRow, PchViewRow) => NewRow): PchViewStructure[NewRow] = - new PchViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala index 19d97f3f8f..ee50049fa8 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.production.productdescription.ProductdescriptionId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdViewFields[Row] { val id: Field[ProductdescriptionId, Row] @@ -19,5 +21,27 @@ trait PdViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PdViewFields extends PdViewStructure[PdViewRow](None, identity, (_, x) => x) +object PdViewFields { + val structure: Relation[PdViewFields, PdViewRow, PdViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) + extends Relation[PdViewFields, PdViewRow, Row] { + + override val fields: PdViewFields[Row] = new PdViewFields[Row] { + override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala index 5bab0a11ac..0cf0f8050b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PdViewRepoImpl extends PdViewRepo { override def select: SelectBuilder[PdViewFields, PdViewRow] = { - SelectBuilderSql("pr.pd", PdViewFields, PdViewRow.jdbcDecoder) + SelectBuilderSql("pr.pd", PdViewFields.structure, PdViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PdViewRow] = { sql"""select "id", "productdescriptionid", "description", "rowguid", "modifieddate"::text from pr.pd""".query(PdViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala deleted file mode 100644 index a98b8bb146..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pd/PdViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pd - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productdescription.ProductdescriptionId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdViewStructure[Row](val prefix: Option[String], val extract: Row => PdViewRow, val merge: (Row, PdViewRow) => Row) - extends Relation[PdViewFields, PdViewRow, Row] - with PdViewFields[Row] { outer => - - override val id = new Field[ProductdescriptionId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdViewRow, merge: (NewRow, PdViewRow) => NewRow): PdViewStructure[NewRow] = - new PdViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala index 25cb9b3ba6..740d21033b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PdocViewFields[Row] { val id: Field[ProductId, Row] @@ -18,5 +20,26 @@ trait PdocViewFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: Field[DocumentId, Row] } -object PdocViewFields extends PdocViewStructure[PdocViewRow](None, identity, (_, x) => x) +object PdocViewFields { + val structure: Relation[PdocViewFields, PdocViewRow, PdocViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) + extends Relation[PdocViewFields, PdocViewRow, Row] { + + override val fields: PdocViewFields[Row] = new PdocViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala index 0118139a54..80ac98fc3c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PdocViewRepoImpl extends PdocViewRepo { override def select: SelectBuilder[PdocViewFields, PdocViewRow] = { - SelectBuilderSql("pr.pdoc", PdocViewFields, PdocViewRow.jdbcDecoder) + SelectBuilderSql("pr.pdoc", PdocViewFields.structure, PdocViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PdocViewRow] = { sql"""select "id", "productid", "modifieddate"::text, "documentnode" from pr.pdoc""".query(PdocViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala deleted file mode 100644 index 6769d2541e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pdoc/PdocViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pdoc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PdocViewStructure[Row](val prefix: Option[String], val extract: Row => PdocViewRow, val merge: (Row, PdocViewRow) => Row) - extends Relation[PdocViewFields, PdocViewRow, Row] - with PdocViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new Field[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PdocViewRow, merge: (NewRow, PdocViewRow) => NewRow): PdocViewStructure[NewRow] = - new PdocViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala index 5a54d4bb67..e98fe4de3e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PiViewFields[Row] { val id: Field[ProductId, Row] @@ -24,5 +26,30 @@ trait PiViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PiViewFields extends PiViewStructure[PiViewRow](None, identity, (_, x) => x) +object PiViewFields { + val structure: Relation[PiViewFields, PiViewRow, PiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) + extends Relation[PiViewFields, PiViewRow, Row] { + + override val fields: PiViewFields[Row] = new PiViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala index d1fcce3c88..7ca618cd9d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PiViewRepoImpl extends PiViewRepo { override def select: SelectBuilder[PiViewFields, PiViewRow] = { - SelectBuilderSql("pr.pi", PiViewFields, PiViewRow.jdbcDecoder) + SelectBuilderSql("pr.pi", PiViewFields.structure, PiViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PiViewRow] = { sql"""select "id", "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text from pr.pi""".query(PiViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala deleted file mode 100644 index dcebe88794..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pi/PiViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PiViewStructure[Row](val prefix: Option[String], val extract: Row => PiViewRow, val merge: (Row, PiViewRow) => Row) - extends Relation[PiViewFields, PiViewRow, Row] - with PiViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, None)(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PiViewRow, merge: (NewRow, PiViewRow) => NewRow): PiViewStructure[NewRow] = - new PiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala index f43dea551c..496c9967ca 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewFields.scala @@ -10,7 +10,9 @@ package plph import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PlphViewFields[Row] { val id: Field[ProductId, Row] @@ -20,5 +22,28 @@ trait PlphViewFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PlphViewFields extends PlphViewStructure[PlphViewRow](None, identity, (_, x) => x) +object PlphViewFields { + val structure: Relation[PlphViewFields, PlphViewRow, PlphViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) + extends Relation[PlphViewFields, PlphViewRow, Row] { + + override val fields: PlphViewFields[Row] = new PlphViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala index 9f732c8c16..712a688462 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PlphViewRepoImpl extends PlphViewRepo { override def select: SelectBuilder[PlphViewFields, PlphViewRow] = { - SelectBuilderSql("pr.plph", PlphViewFields, PlphViewRow.jdbcDecoder) + SelectBuilderSql("pr.plph", PlphViewFields.structure, PlphViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PlphViewRow] = { sql"""select "id", "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text from pr.plph""".query(PlphViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala deleted file mode 100644 index feed6246a5..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/plph/PlphViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package plph - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PlphViewStructure[Row](val prefix: Option[String], val extract: Row => PlphViewRow, val merge: (Row, PlphViewRow) => Row) - extends Relation[PlphViewFields, PlphViewRow, Row] - with PlphViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, None)(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PlphViewRow, merge: (NewRow, PlphViewRow) => NewRow): PlphViewStructure[NewRow] = - new PlphViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala index b06665c868..a97787912d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PmViewFields[Row] { val id: Field[ProductmodelId, Row] @@ -24,5 +26,29 @@ trait PmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmViewFields extends PmViewStructure[PmViewRow](None, identity, (_, x) => x) +object PmViewFields { + val structure: Relation[PmViewFields, PmViewRow, PmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) + extends Relation[PmViewFields, PmViewRow, Row] { + + override val fields: PmViewFields[Row] = new PmViewFields[Row] { + override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala index b6e027cdbc..7c686fb2cd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PmViewRepoImpl extends PmViewRepo { override def select: SelectBuilder[PmViewFields, PmViewRow] = { - SelectBuilderSql("pr.pm", PmViewFields, PmViewRow.jdbcDecoder) + SelectBuilderSql("pr.pm", PmViewFields.structure, PmViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PmViewRow] = { sql"""select "id", "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text from pr.pm""".query(PmViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala deleted file mode 100644 index 3197df10d2..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pm/PmViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PmViewStructure[Row](val prefix: Option[String], val extract: Row => PmViewRow, val merge: (Row, PmViewRow) => Row) - extends Relation[PmViewFields, PmViewRow, Row] - with PmViewFields[Row] { outer => - - override val id = new Field[ProductmodelId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, None)(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmViewRow, merge: (NewRow, PmViewRow) => NewRow): PmViewStructure[NewRow] = - new PmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala index 2d29d5ad64..344c7c720d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmiViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] val illustrationid: Field[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmiViewFields extends PmiViewStructure[PmiViewRow](None, identity, (_, x) => x) +object PmiViewFields { + val structure: Relation[PmiViewFields, PmiViewRow, PmiViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) + extends Relation[PmiViewFields, PmiViewRow, Row] { + + override val fields: PmiViewFields[Row] = new PmiViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala index 3a6a339c57..7e06b47c91 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PmiViewRepoImpl extends PmiViewRepo { override def select: SelectBuilder[PmiViewFields, PmiViewRow] = { - SelectBuilderSql("pr.pmi", PmiViewFields, PmiViewRow.jdbcDecoder) + SelectBuilderSql("pr.pmi", PmiViewFields.structure, PmiViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PmiViewRow] = { sql"""select "productmodelid", "illustrationid", "modifieddate"::text from pr.pmi""".query(PmiViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala deleted file mode 100644 index 03c692bb06..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmi/PmiViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmi - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmiViewStructure[Row](val prefix: Option[String], val extract: Row => PmiViewRow, val merge: (Row, PmiViewRow) => Row) - extends Relation[PmiViewFields, PmiViewRow, Row] - with PmiViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new Field[IllustrationId, Row](prefix, "illustrationid", None, None)(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmiViewRow, merge: (NewRow, PmiViewRow) => NewRow): PmiViewStructure[NewRow] = - new PmiViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala index ab1d72e3bd..9c803e310c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PmpdcViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -19,5 +21,26 @@ trait PmpdcViewFields[Row] { val cultureid: Field[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PmpdcViewFields extends PmpdcViewStructure[PmpdcViewRow](None, identity, (_, x) => x) +object PmpdcViewFields { + val structure: Relation[PmpdcViewFields, PmpdcViewRow, PmpdcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) + extends Relation[PmpdcViewFields, PmpdcViewRow, Row] { + + override val fields: PmpdcViewFields[Row] = new PmpdcViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala index d917a43b9a..85b5b5660d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PmpdcViewRepoImpl extends PmpdcViewRepo { override def select: SelectBuilder[PmpdcViewFields, PmpdcViewRow] = { - SelectBuilderSql("pr.pmpdc", PmpdcViewFields, PmpdcViewRow.jdbcDecoder) + SelectBuilderSql("pr.pmpdc", PmpdcViewFields.structure, PmpdcViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PmpdcViewRow] = { sql"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text from pr.pmpdc""".query(PmpdcViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala deleted file mode 100644 index a96593a81b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pmpdc/PmpdcViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pmpdc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PmpdcViewStructure[Row](val prefix: Option[String], val extract: Row => PmpdcViewRow, val merge: (Row, PmpdcViewRow) => Row) - extends Relation[PmpdcViewFields, PmpdcViewRow, Row] - with PmpdcViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new Field[ProductdescriptionId, Row](prefix, "productdescriptionid", None, None)(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PmpdcViewRow, merge: (NewRow, PmpdcViewRow) => NewRow): PmpdcViewStructure[NewRow] = - new PmpdcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala index 50c9cbab5b..73dc761379 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.productphoto.ProductphotoId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PpViewFields[Row] { val id: Field[ProductphotoId, Row] @@ -22,5 +24,29 @@ trait PpViewFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PpViewFields extends PpViewStructure[PpViewRow](None, identity, (_, x) => x) +object PpViewFields { + val structure: Relation[PpViewFields, PpViewRow, PpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) + extends Relation[PpViewFields, PpViewRow, Row] { + + override val fields: PpViewFields[Row] = new PpViewFields[Row] { + override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala index 6c0ee5e21d..64ce1c55d2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PpViewRepoImpl extends PpViewRepo { override def select: SelectBuilder[PpViewFields, PpViewRow] = { - SelectBuilderSql("pr.pp", PpViewFields, PpViewRow.jdbcDecoder) + SelectBuilderSql("pr.pp", PpViewFields.structure, PpViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PpViewRow] = { sql"""select "id", "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text from pr.pp""".query(PpViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala deleted file mode 100644 index 2d84dc92fc..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pp/PpViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pp - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.productphoto.ProductphotoId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PpViewStructure[Row](val prefix: Option[String], val extract: Row => PpViewRow, val merge: (Row, PpViewRow) => Row) - extends Relation[PpViewFields, PpViewRow, Row] - with PpViewFields[Row] { outer => - - override val id = new Field[ProductphotoId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, None)(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, None)(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PpViewRow, merge: (NewRow, PpViewRow) => NewRow): PpViewStructure[NewRow] = - new PpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala index c7d4a423a0..ecca1a5053 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PppViewFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,26 @@ trait PppViewFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PppViewFields extends PppViewStructure[PppViewRow](None, identity, (_, x) => x) +object PppViewFields { + val structure: Relation[PppViewFields, PppViewRow, PppViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) + extends Relation[PppViewFields, PppViewRow, Row] { + + override val fields: PppViewFields[Row] = new PppViewFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala index 6361de56ed..e826c7549d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PppViewRepoImpl extends PppViewRepo { override def select: SelectBuilder[PppViewFields, PppViewRow] = { - SelectBuilderSql("pr.ppp", PppViewFields, PppViewRow.jdbcDecoder) + SelectBuilderSql("pr.ppp", PppViewFields.structure, PppViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PppViewRow] = { sql"""select "productid", "productphotoid", "primary", "modifieddate"::text from pr.ppp""".query(PppViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala deleted file mode 100644 index 146a003b99..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/ppp/PppViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package ppp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PppViewStructure[Row](val prefix: Option[String], val extract: Row => PppViewRow, val merge: (Row, PppViewRow) => Row) - extends Relation[PppViewFields, PppViewRow, Row] - with PppViewFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new Field[ProductphotoId, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, None)(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PppViewRow, merge: (NewRow, PppViewRow) => NewRow): PppViewStructure[NewRow] = - new PppViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala index 2114439bc5..89a5e6ac65 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productreview.ProductreviewId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PrViewFields[Row] { val id: Field[ProductreviewId, Row] @@ -25,5 +27,31 @@ trait PrViewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PrViewFields extends PrViewStructure[PrViewRow](None, identity, (_, x) => x) +object PrViewFields { + val structure: Relation[PrViewFields, PrViewRow, PrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) + extends Relation[PrViewFields, PrViewRow, Row] { + + override val fields: PrViewFields[Row] = new PrViewFields[Row] { + override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala index b0270c9e8d..b0346542e9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PrViewRepoImpl extends PrViewRepo { override def select: SelectBuilder[PrViewFields, PrViewRow] = { - SelectBuilderSql("pr.pr", PrViewFields, PrViewRow.jdbcDecoder) + SelectBuilderSql("pr.pr", PrViewFields.structure, PrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PrViewRow] = { sql"""select "id", "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text from pr.pr""".query(PrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala deleted file mode 100644 index f0f8b095c1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/pr/PrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package pr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productreview.ProductreviewId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PrViewStructure[Row](val prefix: Option[String], val extract: Row => PrViewRow, val merge: (Row, PrViewRow) => Row) - extends Relation[PrViewFields, PrViewRow, Row] - with PrViewFields[Row] { outer => - - override val id = new Field[ProductreviewId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productreviewid = new Field[ProductreviewId, Row](prefix, "productreviewid", None, None)(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, None)(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), None)(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, None)(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PrViewRow, merge: (NewRow, PrViewRow) => NewRow): PrViewStructure[NewRow] = - new PrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala index 86ad4f55ca..8ad42b3098 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.production.productcategory.ProductcategoryId import adventureworks.production.productsubcategory.ProductsubcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PscViewFields[Row] { val id: Field[ProductsubcategoryId, Row] @@ -22,5 +24,28 @@ trait PscViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PscViewFields extends PscViewStructure[PscViewRow](None, identity, (_, x) => x) +object PscViewFields { + val structure: Relation[PscViewFields, PscViewRow, PscViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) + extends Relation[PscViewFields, PscViewRow, Row] { + + override val fields: PscViewFields[Row] = new PscViewFields[Row] { + override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala index ce1b144833..121fd20713 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PscViewRepoImpl extends PscViewRepo { override def select: SelectBuilder[PscViewFields, PscViewRow] = { - SelectBuilderSql("pr.psc", PscViewFields, PscViewRow.jdbcDecoder) + SelectBuilderSql("pr.psc", PscViewFields.structure, PscViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PscViewRow] = { sql"""select "id", "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text from pr.psc""".query(PscViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala deleted file mode 100644 index 136e30a01b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/psc/PscViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package psc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PscViewStructure[Row](val prefix: Option[String], val extract: Row => PscViewRow, val merge: (Row, PscViewRow) => Row) - extends Relation[PscViewFields, PscViewRow, Row] - with PscViewFields[Row] { outer => - - override val id = new Field[ProductsubcategoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productsubcategoryid = new Field[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, None)(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, None)(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PscViewRow, merge: (NewRow, PscViewRow) => NewRow): PscViewStructure[NewRow] = - new PscViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala index 3e4dca91bd..e1b396328c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[ScrapreasonId, Row] @@ -18,5 +20,26 @@ trait SrViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala index 34df1780b4..21e2439ff9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("pr.sr", SrViewFields, SrViewRow.jdbcDecoder) + SelectBuilderSql("pr.sr", SrViewFields.structure, SrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SrViewRow] = { sql"""select "id", "scrapreasonid", "name", "modifieddate"::text from pr.sr""".query(SrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala deleted file mode 100644 index 9355670f37..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/sr/SrViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[ScrapreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val scrapreasonid = new Field[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala index ec2fbac470..595df76064 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.production.transactionhistory.TransactionhistoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThViewFields[Row] { val id: Field[TransactionhistoryId, Row] @@ -24,5 +26,32 @@ trait ThViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThViewFields extends ThViewStructure[ThViewRow](None, identity, (_, x) => x) +object ThViewFields { + val structure: Relation[ThViewFields, ThViewRow, ThViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) + extends Relation[ThViewFields, ThViewRow, Row] { + + override val fields: ThViewFields[Row] = new ThViewFields[Row] { + override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala index 040dfde1cd..57d7893a38 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class ThViewRepoImpl extends ThViewRepo { override def select: SelectBuilder[ThViewFields, ThViewRow] = { - SelectBuilderSql("pr.th", ThViewFields, ThViewRow.jdbcDecoder) + SelectBuilderSql("pr.th", ThViewFields.structure, ThViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ThViewRow] = { sql"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from pr.th""".query(ThViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala deleted file mode 100644 index 715ac72ef2..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/th/ThViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package th - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.transactionhistory.TransactionhistoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThViewStructure[Row](val prefix: Option[String], val extract: Row => ThViewRow, val merge: (Row, ThViewRow) => Row) - extends Relation[ThViewFields, ThViewRow, Row] - with ThViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThViewRow, merge: (NewRow, ThViewRow) => NewRow): ThViewStructure[NewRow] = - new ThViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala index 0e2c704519..d839c3e7f6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewFields.scala @@ -10,6 +10,8 @@ package tha import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait ThaViewFields[Row] { val id: Field[TransactionhistoryarchiveId, Row] @@ -23,5 +25,32 @@ trait ThaViewFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ThaViewFields extends ThaViewStructure[ThaViewRow](None, identity, (_, x) => x) +object ThaViewFields { + val structure: Relation[ThaViewFields, ThaViewRow, ThaViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) + extends Relation[ThaViewFields, ThaViewRow, Row] { + + override val fields: ThaViewFields[Row] = new ThaViewFields[Row] { + override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala index f444c533a9..8e29d5f057 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class ThaViewRepoImpl extends ThaViewRepo { override def select: SelectBuilder[ThaViewFields, ThaViewRow] = { - SelectBuilderSql("pr.tha", ThaViewFields, ThaViewRow.jdbcDecoder) + SelectBuilderSql("pr.tha", ThaViewFields.structure, ThaViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ThaViewRow] = { sql"""select "id", "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from pr.tha""".query(ThaViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala deleted file mode 100644 index 21ed397cc7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/tha/ThaViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package tha - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.transactionhistoryarchive.TransactionhistoryarchiveId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class ThaViewStructure[Row](val prefix: Option[String], val extract: Row => ThaViewRow, val merge: (Row, ThaViewRow) => Row) - extends Relation[ThaViewFields, ThaViewRow, Row] - with ThaViewFields[Row] { outer => - - override val id = new Field[TransactionhistoryarchiveId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val transactionid = new Field[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, None)(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, None)(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, None)(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), None)(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, None)(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ThaViewRow, merge: (NewRow, ThaViewRow) => NewRow): ThaViewStructure[NewRow] = - new ThaViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala index b4cd755285..c614cac62f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait UmViewFields[Row] { val id: Field[UnitmeasureId, Row] @@ -18,5 +20,26 @@ trait UmViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UmViewFields extends UmViewStructure[UmViewRow](None, identity, (_, x) => x) +object UmViewFields { + val structure: Relation[UmViewFields, UmViewRow, UmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) + extends Relation[UmViewFields, UmViewRow, Row] { + + override val fields: UmViewFields[Row] = new UmViewFields[Row] { + override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala index 5c47ee9dfb..4485a21c2d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class UmViewRepoImpl extends UmViewRepo { override def select: SelectBuilder[UmViewFields, UmViewRow] = { - SelectBuilderSql("pr.um", UmViewFields, UmViewRow.jdbcDecoder) + SelectBuilderSql("pr.um", UmViewFields.structure, UmViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, UmViewRow] = { sql"""select "id", "unitmeasurecode", "name", "modifieddate"::text from pr.um""".query(UmViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala deleted file mode 100644 index 8d78e17361..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/um/UmViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package um - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class UmViewStructure[Row](val prefix: Option[String], val extract: Row => UmViewRow, val merge: (Row, UmViewRow) => Row) - extends Relation[UmViewFields, UmViewRow, Row] - with UmViewFields[Row] { outer => - - override val id = new Field[UnitmeasureId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UmViewRow, merge: (NewRow, UmViewRow) => NewRow): UmViewStructure[NewRow] = - new UmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala index ea86753bf7..225ac16ca5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WViewFields[Row] { val id: Field[WorkorderId, Row] @@ -27,5 +29,32 @@ trait WViewFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WViewFields extends WViewStructure[WViewRow](None, identity, (_, x) => x) +object WViewFields { + val structure: Relation[WViewFields, WViewRow, WViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) + extends Relation[WViewFields, WViewRow, Row] { + + override val fields: WViewFields[Row] = new WViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala index 4dae7264ff..cb1594ac9c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class WViewRepoImpl extends WViewRepo { override def select: SelectBuilder[WViewFields, WViewRow] = { - SelectBuilderSql("pr.w", WViewFields, WViewRow.jdbcDecoder) + SelectBuilderSql("pr.w", WViewFields.structure, WViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, WViewRow] = { sql"""select "id", "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text from pr.w""".query(WViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala deleted file mode 100644 index 93b4ed0475..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/w/WViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package w - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WViewStructure[Row](val prefix: Option[String], val extract: Row => WViewRow, val merge: (Row, WViewRow) => Row) - extends Relation[WViewFields, WViewRow, Row] - with WViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, None)(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, None)(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WViewRow, merge: (NewRow, WViewRow) => NewRow): WViewStructure[NewRow] = - new WViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala index 641cbd9976..3d05dacd9d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WrViewFields[Row] { val id: Field[WorkorderId, Row] @@ -29,5 +31,35 @@ trait WrViewFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WrViewFields extends WrViewStructure[WrViewRow](None, identity, (_, x) => x) +object WrViewFields { + val structure: Relation[WrViewFields, WrViewRow, WrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) + extends Relation[WrViewFields, WrViewRow, Row] { + + override val fields: WrViewFields[Row] = new WrViewFields[Row] { + override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala index d058f4e51a..38eee49846 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class WrViewRepoImpl extends WrViewRepo { override def select: SelectBuilder[WrViewFields, WrViewRow] = { - SelectBuilderSql("pr.wr", WrViewFields, WrViewRow.jdbcDecoder) + SelectBuilderSql("pr.wr", WrViewFields.structure, WrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, WrViewRow] = { sql"""select "id", "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text from pr.wr""".query(WrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala deleted file mode 100644 index 4d1eac32cc..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pr/wr/WrViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pr -package wr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WrViewStructure[Row](val prefix: Option[String], val extract: Row => WrViewRow, val merge: (Row, WrViewRow) => Row) - extends Relation[WrViewFields, WrViewRow, Row] - with WrViewFields[Row] { outer => - - override val id = new Field[WorkorderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val workorderid = new Field[WorkorderId, Row](prefix, "workorderid", None, None)(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new Field[TypoShort, Row](prefix, "operationsequence", None, None)(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, None)(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), None)(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), None)(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), None)(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), None)(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, None)(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, None)(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, None)(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WrViewRow, merge: (NewRow, WrViewRow) => NewRow): WrViewStructure[NewRow] = - new WrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala index 5182f7e7aa..9cd859ebed 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait BillofmaterialsFields[Row] { val billofmaterialsid: IdField[Int, Row] @@ -26,5 +28,31 @@ trait BillofmaterialsFields[Row] { val perassemblyqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object BillofmaterialsFields extends BillofmaterialsStructure[BillofmaterialsRow](None, identity, (_, x) => x) +object BillofmaterialsFields { + val structure: Relation[BillofmaterialsFields, BillofmaterialsRow, BillofmaterialsRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) + extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] { + + override val fields: BillofmaterialsFields[Row] = new BillofmaterialsFields[Row] { + override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) + override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) + override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) + override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.billofmaterialsid, fields.productassemblyid, fields.componentid, fields.startdate, fields.enddate, fields.unitmeasurecode, fields.bomlevel, fields.perassemblyqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala index b99f9812c2..8498662812 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoImpl.scala @@ -31,7 +31,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { sql"""delete from production.billofmaterials where "billofmaterialsid" = ${Segment.paramSegment(billofmaterialsid)(Setter.intSetter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilder("production.billofmaterials", BillofmaterialsFields) + DeleteBuilder("production.billofmaterials", BillofmaterialsFields.structure) } override def insert(unsaved: BillofmaterialsRow): ZIO[ZConnection, Throwable, BillofmaterialsRow] = { sql"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") @@ -84,7 +84,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { streamingInsert(s"""COPY production.billofmaterials("productassemblyid", "componentid", "enddate", "unitmeasurecode", "bomlevel", "billofmaterialsid", "startdate", "perassemblyqty", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(BillofmaterialsRowUnsaved.text) } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderSql("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.jdbcDecoder) + SelectBuilderSql("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, BillofmaterialsRow] = { sql"""select "billofmaterialsid", "productassemblyid", "componentid", "startdate"::text, "enddate"::text, "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate"::text from production.billofmaterials""".query(BillofmaterialsRow.jdbcDecoder).selectStream @@ -109,7 +109,7 @@ class BillofmaterialsRepoImpl extends BillofmaterialsRepo { where "billofmaterialsid" = ${Segment.paramSegment(billofmaterialsid)(Setter.intSetter)}""".update.map(_ > 0) } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilder("production.billofmaterials", BillofmaterialsFields, BillofmaterialsRow.jdbcDecoder) + UpdateBuilder("production.billofmaterials", BillofmaterialsFields.structure, BillofmaterialsRow.jdbcDecoder) } override def upsert(unsaved: BillofmaterialsRow): ZIO[ZConnection, Throwable, UpdateResult[BillofmaterialsRow]] = { sql"""insert into production.billofmaterials("billofmaterialsid", "productassemblyid", "componentid", "startdate", "enddate", "unitmeasurecode", "bomlevel", "perassemblyqty", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala index 4c87b77c5a..6ec5b2de2c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsRepoMock.scala @@ -29,7 +29,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof ZIO.succeed(map.remove(billofmaterialsid).isDefined) } override def delete: DeleteBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields, map) + DeleteBuilderMock(DeleteParams.empty, BillofmaterialsFields.structure.fields, map) } override def insert(unsaved: BillofmaterialsRow): ZIO[ZConnection, Throwable, BillofmaterialsRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - SelectBuilderMock(BillofmaterialsFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(BillofmaterialsFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, BillofmaterialsRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class BillofmaterialsRepoMock(toRow: Function1[BillofmaterialsRowUnsaved, Billof } } override def update: UpdateBuilder[BillofmaterialsFields, BillofmaterialsRow] = { - UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields, map) + UpdateBuilderMock(UpdateParams.empty, BillofmaterialsFields.structure.fields, map) } override def upsert(unsaved: BillofmaterialsRow): ZIO[ZConnection, Throwable, UpdateResult[BillofmaterialsRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala deleted file mode 100644 index 60079addb8..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/billofmaterials/BillofmaterialsStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package billofmaterials - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class BillofmaterialsStructure[Row](val prefix: Option[String], val extract: Row => BillofmaterialsRow, val merge: (Row, BillofmaterialsRow) => Row) - extends Relation[BillofmaterialsFields, BillofmaterialsRow, Row] - with BillofmaterialsFields[Row] { outer => - - override val billofmaterialsid = new IdField[Int, Row](prefix, "billofmaterialsid", None, Some("int4"))(x => extract(x).billofmaterialsid, (row, value) => merge(row, extract(row).copy(billofmaterialsid = value))) - override val productassemblyid = new OptField[ProductId, Row](prefix, "productassemblyid", None, Some("int4"))(x => extract(x).productassemblyid, (row, value) => merge(row, extract(row).copy(productassemblyid = value))) - override val componentid = new Field[ProductId, Row](prefix, "componentid", None, Some("int4"))(x => extract(x).componentid, (row, value) => merge(row, extract(row).copy(componentid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val bomlevel = new Field[TypoShort, Row](prefix, "bomlevel", None, Some("int2"))(x => extract(x).bomlevel, (row, value) => merge(row, extract(row).copy(bomlevel = value))) - override val perassemblyqty = new Field[BigDecimal, Row](prefix, "perassemblyqty", None, Some("numeric"))(x => extract(x).perassemblyqty, (row, value) => merge(row, extract(row).copy(perassemblyqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](billofmaterialsid, productassemblyid, componentid, startdate, enddate, unitmeasurecode, bomlevel, perassemblyqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => BillofmaterialsRow, merge: (NewRow, BillofmaterialsRow) => NewRow): BillofmaterialsStructure[NewRow] = - new BillofmaterialsStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala index ffaacc2a52..4584e06fdf 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureFields.scala @@ -10,12 +10,34 @@ package culture import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CultureFields[Row] { val cultureid: IdField[CultureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CultureFields extends CultureStructure[CultureRow](None, identity, (_, x) => x) +object CultureFields { + val structure: Relation[CultureFields, CultureRow, CultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) + extends Relation[CultureFields, CultureRow, Row] { + + override val fields: CultureFields[Row] = new CultureFields[Row] { + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.cultureid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala index 3cc72f9fce..fd14b92d36 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoImpl.scala @@ -28,7 +28,7 @@ class CultureRepoImpl extends CultureRepo { sql"""delete from production.culture where "cultureid" = ${Segment.paramSegment(cultureid)(CultureId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilder("production.culture", CultureFields) + DeleteBuilder("production.culture", CultureFields.structure) } override def insert(unsaved: CultureRow): ZIO[ZConnection, Throwable, CultureRow] = { sql"""insert into production.culture("cultureid", "name", "modifieddate") @@ -66,7 +66,7 @@ class CultureRepoImpl extends CultureRepo { streamingInsert(s"""COPY production.culture("cultureid", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CultureRowUnsaved.text) } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderSql("production.culture", CultureFields, CultureRow.jdbcDecoder) + SelectBuilderSql("production.culture", CultureFields.structure, CultureRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CultureRow] = { sql"""select "cultureid", "name", "modifieddate"::text from production.culture""".query(CultureRow.jdbcDecoder).selectStream @@ -85,7 +85,7 @@ class CultureRepoImpl extends CultureRepo { where "cultureid" = ${Segment.paramSegment(cultureid)(CultureId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilder("production.culture", CultureFields, CultureRow.jdbcDecoder) + UpdateBuilder("production.culture", CultureFields.structure, CultureRow.jdbcDecoder) } override def upsert(unsaved: CultureRow): ZIO[ZConnection, Throwable, UpdateResult[CultureRow]] = { sql"""insert into production.culture("cultureid", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala index 232244929d..f43e1f266d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureRepoMock.scala @@ -29,7 +29,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], ZIO.succeed(map.remove(cultureid).isDefined) } override def delete: DeleteBuilder[CultureFields, CultureRow] = { - DeleteBuilderMock(DeleteParams.empty, CultureFields, map) + DeleteBuilderMock(DeleteParams.empty, CultureFields.structure.fields, map) } override def insert(unsaved: CultureRow): ZIO[ZConnection, Throwable, CultureRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CultureFields, CultureRow] = { - SelectBuilderMock(CultureFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CultureFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CultureRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class CultureRepoMock(toRow: Function1[CultureRowUnsaved, CultureRow], } } override def update: UpdateBuilder[CultureFields, CultureRow] = { - UpdateBuilderMock(UpdateParams.empty, CultureFields, map) + UpdateBuilderMock(UpdateParams.empty, CultureFields.structure.fields, map) } override def upsert(unsaved: CultureRow): ZIO[ZConnection, Throwable, UpdateResult[CultureRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala deleted file mode 100644 index 6267bec327..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/culture/CultureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package culture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CultureStructure[Row](val prefix: Option[String], val extract: Row => CultureRow, val merge: (Row, CultureRow) => Row) - extends Relation[CultureFields, CultureRow, Row] - with CultureFields[Row] { outer => - - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](cultureid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CultureRow, merge: (NewRow, CultureRow) => NewRow): CultureStructure[NewRow] = - new CultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala index 1731128fa6..0a3da82b3c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentFields.scala @@ -14,8 +14,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait DocumentFields[Row] { val title: Field[/* max 50 chars */ String, Row] @@ -32,5 +34,35 @@ trait DocumentFields[Row] { val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object DocumentFields extends DocumentStructure[DocumentRow](None, identity, (_, x) => x) +object DocumentFields { + val structure: Relation[DocumentFields, DocumentRow, DocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) + extends Relation[DocumentFields, DocumentRow, Row] { + + override val fields: DocumentFields[Row] = new DocumentFields[Row] { + override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) + override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) + override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) + override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) + override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) + override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) + override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.title, fields.owner, fields.folderflag, fields.filename, fields.fileextension, fields.revision, fields.changenumber, fields.status, fields.documentsummary, fields.document, fields.rowguid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala index 7a30953178..7298eb42ab 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoImpl.scala @@ -33,7 +33,7 @@ class DocumentRepoImpl extends DocumentRepo { sql"""delete from production.document where "documentnode" = ${Segment.paramSegment(documentnode)(DocumentId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilder("production.document", DocumentFields) + DeleteBuilder("production.document", DocumentFields.structure) } override def insert(unsaved: DocumentRow): ZIO[ZConnection, Throwable, DocumentRow] = { sql"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") @@ -93,7 +93,7 @@ class DocumentRepoImpl extends DocumentRepo { streamingInsert(s"""COPY production.document("title", "owner", "filename", "fileextension", "revision", "status", "documentsummary", "document", "folderflag", "changenumber", "rowguid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(DocumentRowUnsaved.text) } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderSql("production.document", DocumentFields, DocumentRow.jdbcDecoder) + SelectBuilderSql("production.document", DocumentFields.structure, DocumentRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, DocumentRow] = { sql"""select "title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate"::text, "documentnode" from production.document""".query(DocumentRow.jdbcDecoder).selectStream @@ -128,7 +128,7 @@ class DocumentRepoImpl extends DocumentRepo { where "documentnode" = ${Segment.paramSegment(documentnode)(DocumentId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilder("production.document", DocumentFields, DocumentRow.jdbcDecoder) + UpdateBuilder("production.document", DocumentFields.structure, DocumentRow.jdbcDecoder) } override def upsert(unsaved: DocumentRow): ZIO[ZConnection, Throwable, UpdateResult[DocumentRow]] = { sql"""insert into production.document("title", "owner", "folderflag", "filename", "fileextension", "revision", "changenumber", "status", "documentsummary", "document", "rowguid", "modifieddate", "documentnode") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala index 44ee1feb28..8dfe847fe2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentRepoMock.scala @@ -30,7 +30,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], ZIO.succeed(map.remove(documentnode).isDefined) } override def delete: DeleteBuilder[DocumentFields, DocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, DocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, DocumentFields.structure.fields, map) } override def insert(unsaved: DocumentRow): ZIO[ZConnection, Throwable, DocumentRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[DocumentFields, DocumentRow] = { - SelectBuilderMock(DocumentFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(DocumentFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, DocumentRow] = { ZStream.fromIterable(map.values) @@ -91,7 +91,7 @@ class DocumentRepoMock(toRow: Function1[DocumentRowUnsaved, DocumentRow], } } override def update: UpdateBuilder[DocumentFields, DocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, DocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, DocumentFields.structure.fields, map) } override def upsert(unsaved: DocumentRow): ZIO[ZConnection, Throwable, UpdateResult[DocumentRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala deleted file mode 100644 index 2f58d1e1d0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/document/DocumentStructure.scala +++ /dev/null @@ -1,45 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package document - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class DocumentStructure[Row](val prefix: Option[String], val extract: Row => DocumentRow, val merge: (Row, DocumentRow) => Row) - extends Relation[DocumentFields, DocumentRow, Row] - with DocumentFields[Row] { outer => - - override val title = new Field[/* max 50 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val owner = new Field[BusinessentityId, Row](prefix, "owner", None, Some("int4"))(x => extract(x).owner, (row, value) => merge(row, extract(row).copy(owner = value))) - override val folderflag = new Field[Flag, Row](prefix, "folderflag", None, Some("bool"))(x => extract(x).folderflag, (row, value) => merge(row, extract(row).copy(folderflag = value))) - override val filename = new Field[/* max 400 chars */ String, Row](prefix, "filename", None, None)(x => extract(x).filename, (row, value) => merge(row, extract(row).copy(filename = value))) - override val fileextension = new OptField[/* max 8 chars */ String, Row](prefix, "fileextension", None, None)(x => extract(x).fileextension, (row, value) => merge(row, extract(row).copy(fileextension = value))) - override val revision = new Field[/* bpchar, max 5 chars */ String, Row](prefix, "revision", None, Some("bpchar"))(x => extract(x).revision, (row, value) => merge(row, extract(row).copy(revision = value))) - override val changenumber = new Field[Int, Row](prefix, "changenumber", None, Some("int4"))(x => extract(x).changenumber, (row, value) => merge(row, extract(row).copy(changenumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val documentsummary = new OptField[String, Row](prefix, "documentsummary", None, None)(x => extract(x).documentsummary, (row, value) => merge(row, extract(row).copy(documentsummary = value))) - override val document = new OptField[TypoBytea, Row](prefix, "document", None, Some("bytea"))(x => extract(x).document, (row, value) => merge(row, extract(row).copy(document = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](title, owner, folderflag, filename, fileextension, revision, changenumber, status, documentsummary, document, rowguid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => DocumentRow, merge: (NewRow, DocumentRow) => NewRow): DocumentStructure[NewRow] = - new DocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala index 7c45043058..abe779001b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationFields.scala @@ -10,13 +10,35 @@ package illustration import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoXml import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait IllustrationFields[Row] { val illustrationid: IdField[IllustrationId, Row] val diagram: OptField[TypoXml, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object IllustrationFields extends IllustrationStructure[IllustrationRow](None, identity, (_, x) => x) +object IllustrationFields { + val structure: Relation[IllustrationFields, IllustrationRow, IllustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) + extends Relation[IllustrationFields, IllustrationRow, Row] { + + override val fields: IllustrationFields[Row] = new IllustrationFields[Row] { + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.illustrationid, fields.diagram, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala index a737768a2d..badb44d308 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoImpl.scala @@ -29,7 +29,7 @@ class IllustrationRepoImpl extends IllustrationRepo { sql"""delete from production.illustration where "illustrationid" = ${Segment.paramSegment(illustrationid)(IllustrationId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilder("production.illustration", IllustrationFields) + DeleteBuilder("production.illustration", IllustrationFields.structure) } override def insert(unsaved: IllustrationRow): ZIO[ZConnection, Throwable, IllustrationRow] = { sql"""insert into production.illustration("illustrationid", "diagram", "modifieddate") @@ -70,7 +70,7 @@ class IllustrationRepoImpl extends IllustrationRepo { streamingInsert(s"""COPY production.illustration("diagram", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(IllustrationRowUnsaved.text) } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderSql("production.illustration", IllustrationFields, IllustrationRow.jdbcDecoder) + SelectBuilderSql("production.illustration", IllustrationFields.structure, IllustrationRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, IllustrationRow] = { sql"""select "illustrationid", "diagram", "modifieddate"::text from production.illustration""".query(IllustrationRow.jdbcDecoder).selectStream @@ -89,7 +89,7 @@ class IllustrationRepoImpl extends IllustrationRepo { where "illustrationid" = ${Segment.paramSegment(illustrationid)(IllustrationId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilder("production.illustration", IllustrationFields, IllustrationRow.jdbcDecoder) + UpdateBuilder("production.illustration", IllustrationFields.structure, IllustrationRow.jdbcDecoder) } override def upsert(unsaved: IllustrationRow): ZIO[ZConnection, Throwable, UpdateResult[IllustrationRow]] = { sql"""insert into production.illustration("illustrationid", "diagram", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala index 7554ad121d..21968ed6b9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationRepoMock.scala @@ -29,7 +29,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration ZIO.succeed(map.remove(illustrationid).isDefined) } override def delete: DeleteBuilder[IllustrationFields, IllustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, IllustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, IllustrationFields.structure.fields, map) } override def insert(unsaved: IllustrationRow): ZIO[ZConnection, Throwable, IllustrationRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[IllustrationFields, IllustrationRow] = { - SelectBuilderMock(IllustrationFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(IllustrationFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, IllustrationRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class IllustrationRepoMock(toRow: Function1[IllustrationRowUnsaved, Illustration } } override def update: UpdateBuilder[IllustrationFields, IllustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, IllustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, IllustrationFields.structure.fields, map) } override def upsert(unsaved: IllustrationRow): ZIO[ZConnection, Throwable, UpdateResult[IllustrationRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala deleted file mode 100644 index 9258b270be..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/illustration/IllustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package illustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoXml -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class IllustrationStructure[Row](val prefix: Option[String], val extract: Row => IllustrationRow, val merge: (Row, IllustrationRow) => Row) - extends Relation[IllustrationFields, IllustrationRow, Row] - with IllustrationFields[Row] { outer => - - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val diagram = new OptField[TypoXml, Row](prefix, "diagram", None, Some("xml"))(x => extract(x).diagram, (row, value) => merge(row, extract(row).copy(diagram = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](illustrationid, diagram, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IllustrationRow, merge: (NewRow, IllustrationRow) => NewRow): IllustrationStructure[NewRow] = - new IllustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationFields.scala index 447ab8fcfd..d18037c0ce 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationFields.scala @@ -10,7 +10,9 @@ package location import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait LocationFields[Row] { val locationid: IdField[LocationId, Row] @@ -19,5 +21,27 @@ trait LocationFields[Row] { val availability: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object LocationFields extends LocationStructure[LocationRow](None, identity, (_, x) => x) +object LocationFields { + val structure: Relation[LocationFields, LocationRow, LocationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) + extends Relation[LocationFields, LocationRow, Row] { + + override val fields: LocationFields[Row] = new LocationFields[Row] { + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) + override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.locationid, fields.name, fields.costrate, fields.availability, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala index 4b57f06c46..2f52684f4c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoImpl.scala @@ -29,7 +29,7 @@ class LocationRepoImpl extends LocationRepo { sql"""delete from production.location where "locationid" = ${Segment.paramSegment(locationid)(LocationId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilder("production.location", LocationFields) + DeleteBuilder("production.location", LocationFields.structure) } override def insert(unsaved: LocationRow): ZIO[ZConnection, Throwable, LocationRow] = { sql"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") @@ -78,7 +78,7 @@ class LocationRepoImpl extends LocationRepo { streamingInsert(s"""COPY production.location("name", "locationid", "costrate", "availability", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(LocationRowUnsaved.text) } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderSql("production.location", LocationFields, LocationRow.jdbcDecoder) + SelectBuilderSql("production.location", LocationFields.structure, LocationRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, LocationRow] = { sql"""select "locationid", "name", "costrate", "availability", "modifieddate"::text from production.location""".query(LocationRow.jdbcDecoder).selectStream @@ -99,7 +99,7 @@ class LocationRepoImpl extends LocationRepo { where "locationid" = ${Segment.paramSegment(locationid)(LocationId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilder("production.location", LocationFields, LocationRow.jdbcDecoder) + UpdateBuilder("production.location", LocationFields.structure, LocationRow.jdbcDecoder) } override def upsert(unsaved: LocationRow): ZIO[ZConnection, Throwable, UpdateResult[LocationRow]] = { sql"""insert into production.location("locationid", "name", "costrate", "availability", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala index ef7fa9caaa..4c6501f203 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationRepoMock.scala @@ -29,7 +29,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], ZIO.succeed(map.remove(locationid).isDefined) } override def delete: DeleteBuilder[LocationFields, LocationRow] = { - DeleteBuilderMock(DeleteParams.empty, LocationFields, map) + DeleteBuilderMock(DeleteParams.empty, LocationFields.structure.fields, map) } override def insert(unsaved: LocationRow): ZIO[ZConnection, Throwable, LocationRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[LocationFields, LocationRow] = { - SelectBuilderMock(LocationFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(LocationFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, LocationRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class LocationRepoMock(toRow: Function1[LocationRowUnsaved, LocationRow], } } override def update: UpdateBuilder[LocationFields, LocationRow] = { - UpdateBuilderMock(UpdateParams.empty, LocationFields, map) + UpdateBuilderMock(UpdateParams.empty, LocationFields.structure.fields, map) } override def upsert(unsaved: LocationRow): ZIO[ZConnection, Throwable, UpdateResult[LocationRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala deleted file mode 100644 index 09cb5efc34..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/location/LocationStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package location - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class LocationStructure[Row](val prefix: Option[String], val extract: Row => LocationRow, val merge: (Row, LocationRow) => Row) - extends Relation[LocationFields, LocationRow, Row] - with LocationFields[Row] { outer => - - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int4"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val costrate = new Field[BigDecimal, Row](prefix, "costrate", None, Some("numeric"))(x => extract(x).costrate, (row, value) => merge(row, extract(row).copy(costrate = value))) - override val availability = new Field[BigDecimal, Row](prefix, "availability", None, Some("numeric"))(x => extract(x).availability, (row, value) => merge(row, extract(row).copy(availability = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](locationid, name, costrate, availability, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => LocationRow, merge: (NewRow, LocationRow) => NewRow): LocationStructure[NewRow] = - new LocationStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductFields.scala index 1a5d92a40f..c57ee41926 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductFields.scala @@ -16,8 +16,10 @@ import adventureworks.production.unitmeasure.UnitmeasureId import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductFields[Row] { val productid: IdField[ProductId, Row] @@ -46,5 +48,47 @@ trait ProductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductFields extends ProductStructure[ProductRow](None, identity, (_, x) => x) +object ProductFields { + val structure: Relation[ProductFields, ProductRow, ProductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) + extends Relation[ProductFields, ProductRow, Row] { + + override val fields: ProductFields[Row] = new ProductFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) + override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) + override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) + override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) + override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) + override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) + override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) + override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) + override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) + override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) + override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) + override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) + override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productnumber, fields.makeflag, fields.finishedgoodsflag, fields.color, fields.safetystocklevel, fields.reorderpoint, fields.standardcost, fields.listprice, fields.size, fields.sizeunitmeasurecode, fields.weightunitmeasurecode, fields.weight, fields.daystomanufacture, fields.productline, fields.`class`, fields.style, fields.productsubcategoryid, fields.productmodelid, fields.sellstartdate, fields.sellenddate, fields.discontinueddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala index e7b83fc88b..aa8f3a63d9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoImpl.scala @@ -35,7 +35,7 @@ class ProductRepoImpl extends ProductRepo { sql"""delete from production.product where "productid" = ${Segment.paramSegment(productid)(ProductId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilder("production.product", ProductFields) + DeleteBuilder("production.product", ProductFields.structure) } override def insert(unsaved: ProductRow): ZIO[ZConnection, Throwable, ProductRow] = { sql"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") @@ -107,7 +107,7 @@ class ProductRepoImpl extends ProductRepo { streamingInsert(s"""COPY production.product("name", "productnumber", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "productid", "makeflag", "finishedgoodsflag", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductRowUnsaved.text) } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderSql("production.product", ProductFields, ProductRow.jdbcDecoder) + SelectBuilderSql("production.product", ProductFields.structure, ProductRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductRow] = { sql"""select "productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate"::text, "sellenddate"::text, "discontinueddate"::text, "rowguid", "modifieddate"::text from production.product""".query(ProductRow.jdbcDecoder).selectStream @@ -148,7 +148,7 @@ class ProductRepoImpl extends ProductRepo { where "productid" = ${Segment.paramSegment(productid)(ProductId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilder("production.product", ProductFields, ProductRow.jdbcDecoder) + UpdateBuilder("production.product", ProductFields.structure, ProductRow.jdbcDecoder) } override def upsert(unsaved: ProductRow): ZIO[ZConnection, Throwable, UpdateResult[ProductRow]] = { sql"""insert into production.product("productid", "name", "productnumber", "makeflag", "finishedgoodsflag", "color", "safetystocklevel", "reorderpoint", "standardcost", "listprice", "size", "sizeunitmeasurecode", "weightunitmeasurecode", "weight", "daystomanufacture", "productline", "class", "style", "productsubcategoryid", "productmodelid", "sellstartdate", "sellenddate", "discontinueddate", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala index 69d2002ade..5746672b24 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductRepoMock.scala @@ -29,7 +29,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], ZIO.succeed(map.remove(productid).isDefined) } override def delete: DeleteBuilder[ProductFields, ProductRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductFields.structure.fields, map) } override def insert(unsaved: ProductRow): ZIO[ZConnection, Throwable, ProductRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductFields, ProductRow] = { - SelectBuilderMock(ProductFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductRepoMock(toRow: Function1[ProductRowUnsaved, ProductRow], } } override def update: UpdateBuilder[ProductFields, ProductRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductFields.structure.fields, map) } override def upsert(unsaved: ProductRow): ZIO[ZConnection, Throwable, UpdateResult[ProductRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala deleted file mode 100644 index 76c4f296d7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/product/ProductStructure.scala +++ /dev/null @@ -1,59 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package product - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.production.productsubcategory.ProductsubcategoryId -import adventureworks.production.unitmeasure.UnitmeasureId -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductStructure[Row](val prefix: Option[String], val extract: Row => ProductRow, val merge: (Row, ProductRow) => Row) - extends Relation[ProductFields, ProductRow, Row] - with ProductFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productnumber = new Field[/* max 25 chars */ String, Row](prefix, "productnumber", None, None)(x => extract(x).productnumber, (row, value) => merge(row, extract(row).copy(productnumber = value))) - override val makeflag = new Field[Flag, Row](prefix, "makeflag", None, Some("bool"))(x => extract(x).makeflag, (row, value) => merge(row, extract(row).copy(makeflag = value))) - override val finishedgoodsflag = new Field[Flag, Row](prefix, "finishedgoodsflag", None, Some("bool"))(x => extract(x).finishedgoodsflag, (row, value) => merge(row, extract(row).copy(finishedgoodsflag = value))) - override val color = new OptField[/* max 15 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val safetystocklevel = new Field[TypoShort, Row](prefix, "safetystocklevel", None, Some("int2"))(x => extract(x).safetystocklevel, (row, value) => merge(row, extract(row).copy(safetystocklevel = value))) - override val reorderpoint = new Field[TypoShort, Row](prefix, "reorderpoint", None, Some("int2"))(x => extract(x).reorderpoint, (row, value) => merge(row, extract(row).copy(reorderpoint = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val size = new OptField[/* max 5 chars */ String, Row](prefix, "size", None, None)(x => extract(x).size, (row, value) => merge(row, extract(row).copy(size = value))) - override val sizeunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "sizeunitmeasurecode", None, Some("bpchar"))(x => extract(x).sizeunitmeasurecode, (row, value) => merge(row, extract(row).copy(sizeunitmeasurecode = value))) - override val weightunitmeasurecode = new OptField[UnitmeasureId, Row](prefix, "weightunitmeasurecode", None, Some("bpchar"))(x => extract(x).weightunitmeasurecode, (row, value) => merge(row, extract(row).copy(weightunitmeasurecode = value))) - override val weight = new OptField[BigDecimal, Row](prefix, "weight", None, Some("numeric"))(x => extract(x).weight, (row, value) => merge(row, extract(row).copy(weight = value))) - override val daystomanufacture = new Field[Int, Row](prefix, "daystomanufacture", None, Some("int4"))(x => extract(x).daystomanufacture, (row, value) => merge(row, extract(row).copy(daystomanufacture = value))) - override val productline = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "productline", None, Some("bpchar"))(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val `class` = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "class", None, Some("bpchar"))(x => extract(x).`class`, (row, value) => merge(row, extract(row).copy(`class` = value))) - override val style = new OptField[/* bpchar, max 2 chars */ String, Row](prefix, "style", None, Some("bpchar"))(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val productsubcategoryid = new OptField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productmodelid = new OptField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val sellstartdate = new Field[TypoLocalDateTime, Row](prefix, "sellstartdate", Some("text"), Some("timestamp"))(x => extract(x).sellstartdate, (row, value) => merge(row, extract(row).copy(sellstartdate = value))) - override val sellenddate = new OptField[TypoLocalDateTime, Row](prefix, "sellenddate", Some("text"), Some("timestamp"))(x => extract(x).sellenddate, (row, value) => merge(row, extract(row).copy(sellenddate = value))) - override val discontinueddate = new OptField[TypoLocalDateTime, Row](prefix, "discontinueddate", Some("text"), Some("timestamp"))(x => extract(x).discontinueddate, (row, value) => merge(row, extract(row).copy(discontinueddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productnumber, makeflag, finishedgoodsflag, color, safetystocklevel, reorderpoint, standardcost, listprice, size, sizeunitmeasurecode, weightunitmeasurecode, weight, daystomanufacture, productline, `class`, style, productsubcategoryid, productmodelid, sellstartdate, sellenddate, discontinueddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductRow, merge: (NewRow, ProductRow) => NewRow): ProductStructure[NewRow] = - new ProductStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala index d0503b3cac..2d59346265 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductcategoryFields[Row] { val productcategoryid: IdField[ProductcategoryId, Row] @@ -19,5 +21,26 @@ trait ProductcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcategoryFields extends ProductcategoryStructure[ProductcategoryRow](None, identity, (_, x) => x) +object ProductcategoryFields { + val structure: Relation[ProductcategoryFields, ProductcategoryRow, ProductcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) + extends Relation[ProductcategoryFields, ProductcategoryRow, Row] { + + override val fields: ProductcategoryFields[Row] = new ProductcategoryFields[Row] { + override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala index ec0021d08a..25805e8cd4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { sql"""delete from production.productcategory where "productcategoryid" = ${Segment.paramSegment(productcategoryid)(ProductcategoryId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilder("production.productcategory", ProductcategoryFields) + DeleteBuilder("production.productcategory", ProductcategoryFields.structure) } override def insert(unsaved: ProductcategoryRow): ZIO[ZConnection, Throwable, ProductcategoryRow] = { sql"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { streamingInsert(s"""COPY production.productcategory("name", "productcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductcategoryRowUnsaved.text) } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderSql("production.productcategory", ProductcategoryFields, ProductcategoryRow.jdbcDecoder) + SelectBuilderSql("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductcategoryRow] = { sql"""select "productcategoryid", "name", "rowguid", "modifieddate"::text from production.productcategory""".query(ProductcategoryRow.jdbcDecoder).selectStream @@ -94,7 +94,7 @@ class ProductcategoryRepoImpl extends ProductcategoryRepo { where "productcategoryid" = ${Segment.paramSegment(productcategoryid)(ProductcategoryId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilder("production.productcategory", ProductcategoryFields, ProductcategoryRow.jdbcDecoder) + UpdateBuilder("production.productcategory", ProductcategoryFields.structure, ProductcategoryRow.jdbcDecoder) } override def upsert(unsaved: ProductcategoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductcategoryRow]] = { sql"""insert into production.productcategory("productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala index 3f6093ac6d..5dd785e1fb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryRepoMock.scala @@ -29,7 +29,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc ZIO.succeed(map.remove(productcategoryid).isDefined) } override def delete: DeleteBuilder[ProductcategoryFields, ProductcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcategoryFields.structure.fields, map) } override def insert(unsaved: ProductcategoryRow): ZIO[ZConnection, Throwable, ProductcategoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductcategoryFields, ProductcategoryRow] = { - SelectBuilderMock(ProductcategoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductcategoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductcategoryRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductcategoryRepoMock(toRow: Function1[ProductcategoryRowUnsaved, Produc } } override def update: UpdateBuilder[ProductcategoryFields, ProductcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductcategoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductcategoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala deleted file mode 100644 index 64c9e81a9e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcategory/ProductcategoryStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcategoryRow, val merge: (Row, ProductcategoryRow) => Row) - extends Relation[ProductcategoryFields, ProductcategoryRow, Row] - with ProductcategoryFields[Row] { outer => - - override val productcategoryid = new IdField[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcategoryRow, merge: (NewRow, ProductcategoryRow) => NewRow): ProductcategoryStructure[NewRow] = - new ProductcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala index cf5ff0d103..0da0e973da 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryFields.scala @@ -10,8 +10,10 @@ package productcosthistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductcosthistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductcosthistoryFields[Row] { val standardcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductcosthistoryFields extends ProductcosthistoryStructure[ProductcosthistoryRow](None, identity, (_, x) => x) +object ProductcosthistoryFields { + val structure: Relation[ProductcosthistoryFields, ProductcosthistoryRow, ProductcosthistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) + extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] { + + override val fields: ProductcosthistoryFields[Row] = new ProductcosthistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.standardcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala index 70fec9fed2..3033589ab4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { sql"""delete from production.productcosthistory where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilder("production.productcosthistory", ProductcosthistoryFields) + DeleteBuilder("production.productcosthistory", ProductcosthistoryFields.structure) } override def insert(unsaved: ProductcosthistoryRow): ZIO[ZConnection, Throwable, ProductcosthistoryRow] = { sql"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") @@ -69,7 +69,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { streamingInsert(s"""COPY production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductcosthistoryRowUnsaved.text) } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.jdbcDecoder) + SelectBuilderSql("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductcosthistoryRow] = { sql"""select "productid", "startdate"::text, "enddate"::text, "standardcost", "modifieddate"::text from production.productcosthistory""".query(ProductcosthistoryRow.jdbcDecoder).selectStream @@ -86,7 +86,7 @@ class ProductcosthistoryRepoImpl extends ProductcosthistoryRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilder("production.productcosthistory", ProductcosthistoryFields, ProductcosthistoryRow.jdbcDecoder) + UpdateBuilder("production.productcosthistory", ProductcosthistoryFields.structure, ProductcosthistoryRow.jdbcDecoder) } override def upsert(unsaved: ProductcosthistoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductcosthistoryRow]] = { sql"""insert into production.productcosthistory("productid", "startdate", "enddate", "standardcost", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala index bb1b8ba10e..05cf854313 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryRepoMock.scala @@ -29,7 +29,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductcosthistoryFields.structure.fields, map) } override def insert(unsaved: ProductcosthistoryRow): ZIO[ZConnection, Throwable, ProductcosthistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - SelectBuilderMock(ProductcosthistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductcosthistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductcosthistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductcosthistoryRepoMock(toRow: Function1[ProductcosthistoryRowUnsaved, } } override def update: UpdateBuilder[ProductcosthistoryFields, ProductcosthistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductcosthistoryFields.structure.fields, map) } override def upsert(unsaved: ProductcosthistoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductcosthistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala deleted file mode 100644 index 3ea558bcaa..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productcosthistory/ProductcosthistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productcosthistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductcosthistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductcosthistoryRow, val merge: (Row, ProductcosthistoryRow) => Row) - extends Relation[ProductcosthistoryFields, ProductcosthistoryRow, Row] - with ProductcosthistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val standardcost = new Field[BigDecimal, Row](prefix, "standardcost", None, Some("numeric"))(x => extract(x).standardcost, (row, value) => merge(row, extract(row).copy(standardcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, standardcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductcosthistoryRow, merge: (NewRow, ProductcosthistoryRow) => NewRow): ProductcosthistoryStructure[NewRow] = - new ProductcosthistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala index e1a2b59269..75a2e533ca 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionFields.scala @@ -10,7 +10,9 @@ package productdescription import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdescriptionFields[Row] { val productdescriptionid: IdField[ProductdescriptionId, Row] @@ -18,5 +20,26 @@ trait ProductdescriptionFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductdescriptionFields extends ProductdescriptionStructure[ProductdescriptionRow](None, identity, (_, x) => x) +object ProductdescriptionFields { + val structure: Relation[ProductdescriptionFields, ProductdescriptionRow, ProductdescriptionRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) + extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] { + + override val fields: ProductdescriptionFields[Row] = new ProductdescriptionFields[Row] { + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productdescriptionid, fields.description, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala index e88eb2d482..7a10bf4d10 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoImpl.scala @@ -29,7 +29,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { sql"""delete from production.productdescription where "productdescriptionid" = ${Segment.paramSegment(productdescriptionid)(ProductdescriptionId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilder("production.productdescription", ProductdescriptionFields) + DeleteBuilder("production.productdescription", ProductdescriptionFields.structure) } override def insert(unsaved: ProductdescriptionRow): ZIO[ZConnection, Throwable, ProductdescriptionRow] = { sql"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") @@ -74,7 +74,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { streamingInsert(s"""COPY production.productdescription("description", "productdescriptionid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductdescriptionRowUnsaved.text) } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderSql("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.jdbcDecoder) + SelectBuilderSql("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductdescriptionRow] = { sql"""select "productdescriptionid", "description", "rowguid", "modifieddate"::text from production.productdescription""".query(ProductdescriptionRow.jdbcDecoder).selectStream @@ -94,7 +94,7 @@ class ProductdescriptionRepoImpl extends ProductdescriptionRepo { where "productdescriptionid" = ${Segment.paramSegment(productdescriptionid)(ProductdescriptionId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilder("production.productdescription", ProductdescriptionFields, ProductdescriptionRow.jdbcDecoder) + UpdateBuilder("production.productdescription", ProductdescriptionFields.structure, ProductdescriptionRow.jdbcDecoder) } override def upsert(unsaved: ProductdescriptionRow): ZIO[ZConnection, Throwable, UpdateResult[ProductdescriptionRow]] = { sql"""insert into production.productdescription("productdescriptionid", "description", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala index 993be769b9..4cc9c37845 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionRepoMock.scala @@ -29,7 +29,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, ZIO.succeed(map.remove(productdescriptionid).isDefined) } override def delete: DeleteBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdescriptionFields.structure.fields, map) } override def insert(unsaved: ProductdescriptionRow): ZIO[ZConnection, Throwable, ProductdescriptionRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - SelectBuilderMock(ProductdescriptionFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductdescriptionFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductdescriptionRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductdescriptionRepoMock(toRow: Function1[ProductdescriptionRowUnsaved, } } override def update: UpdateBuilder[ProductdescriptionFields, ProductdescriptionRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdescriptionFields.structure.fields, map) } override def upsert(unsaved: ProductdescriptionRow): ZIO[ZConnection, Throwable, UpdateResult[ProductdescriptionRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala deleted file mode 100644 index fa0869f21a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdescription/ProductdescriptionStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdescriptionStructure[Row](val prefix: Option[String], val extract: Row => ProductdescriptionRow, val merge: (Row, ProductdescriptionRow) => Row) - extends Relation[ProductdescriptionFields, ProductdescriptionRow, Row] - with ProductdescriptionFields[Row] { outer => - - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productdescriptionid, description, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdescriptionRow, merge: (NewRow, ProductdescriptionRow) => NewRow): ProductdescriptionStructure[NewRow] = - new ProductdescriptionStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala index 2f7d55f952..58a368403e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.document.DocumentId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductdocumentFields[Row] { val productid: IdField[ProductId, Row] val modifieddate: Field[TypoLocalDateTime, Row] val documentnode: IdField[DocumentId, Row] } -object ProductdocumentFields extends ProductdocumentStructure[ProductdocumentRow](None, identity, (_, x) => x) +object ProductdocumentFields { + val structure: Relation[ProductdocumentFields, ProductdocumentRow, ProductdocumentRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) + extends Relation[ProductdocumentFields, ProductdocumentRow, Row] { + + override val fields: ProductdocumentFields[Row] = new ProductdocumentFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.modifieddate, fields.documentnode) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala index 992bdae534..ffa2ce7015 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoImpl.scala @@ -29,7 +29,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { sql"""delete from production.productdocument where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "documentnode" = ${Segment.paramSegment(compositeId.documentnode)(DocumentId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilder("production.productdocument", ProductdocumentFields) + DeleteBuilder("production.productdocument", ProductdocumentFields.structure) } override def insert(unsaved: ProductdocumentRow): ZIO[ZConnection, Throwable, ProductdocumentRow] = { sql"""insert into production.productdocument("productid", "modifieddate", "documentnode") @@ -70,7 +70,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { streamingInsert(s"""COPY production.productdocument("productid", "modifieddate", "documentnode") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductdocumentRowUnsaved.text) } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderSql("production.productdocument", ProductdocumentFields, ProductdocumentRow.jdbcDecoder) + SelectBuilderSql("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductdocumentRow] = { sql"""select "productid", "modifieddate"::text, "documentnode" from production.productdocument""".query(ProductdocumentRow.jdbcDecoder).selectStream @@ -85,7 +85,7 @@ class ProductdocumentRepoImpl extends ProductdocumentRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "documentnode" = ${Segment.paramSegment(compositeId.documentnode)(DocumentId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilder("production.productdocument", ProductdocumentFields, ProductdocumentRow.jdbcDecoder) + UpdateBuilder("production.productdocument", ProductdocumentFields.structure, ProductdocumentRow.jdbcDecoder) } override def upsert(unsaved: ProductdocumentRow): ZIO[ZConnection, Throwable, UpdateResult[ProductdocumentRow]] = { sql"""insert into production.productdocument("productid", "modifieddate", "documentnode") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala index eb1b958d8c..8bcdac6bad 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentRepoMock.scala @@ -29,7 +29,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductdocumentFields, ProductdocumentRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductdocumentFields.structure.fields, map) } override def insert(unsaved: ProductdocumentRow): ZIO[ZConnection, Throwable, ProductdocumentRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductdocumentFields, ProductdocumentRow] = { - SelectBuilderMock(ProductdocumentFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductdocumentFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductdocumentRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductdocumentRepoMock(toRow: Function1[ProductdocumentRowUnsaved, Produc } } override def update: UpdateBuilder[ProductdocumentFields, ProductdocumentRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductdocumentFields.structure.fields, map) } override def upsert(unsaved: ProductdocumentRow): ZIO[ZConnection, Throwable, UpdateResult[ProductdocumentRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala deleted file mode 100644 index 552a4d3bd0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productdocument/ProductdocumentStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productdocument - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.document.DocumentId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductdocumentStructure[Row](val prefix: Option[String], val extract: Row => ProductdocumentRow, val merge: (Row, ProductdocumentRow) => Row) - extends Relation[ProductdocumentFields, ProductdocumentRow, Row] - with ProductdocumentFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - override val documentnode = new IdField[DocumentId, Row](prefix, "documentnode", None, None)(x => extract(x).documentnode, (row, value) => merge(row, extract(row).copy(documentnode = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, modifieddate, documentnode) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductdocumentRow, merge: (NewRow, ProductdocumentRow) => NewRow): ProductdocumentStructure[NewRow] = - new ProductdocumentStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala index c295edd540..e3d41dae02 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.location.LocationId import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductinventoryFields[Row] { val productid: IdField[ProductId, Row] @@ -24,5 +26,29 @@ trait ProductinventoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductinventoryFields extends ProductinventoryStructure[ProductinventoryRow](None, identity, (_, x) => x) +object ProductinventoryFields { + val structure: Relation[ProductinventoryFields, ProductinventoryRow, ProductinventoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) + extends Relation[ProductinventoryFields, ProductinventoryRow, Row] { + + override val fields: ProductinventoryFields[Row] = new ProductinventoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) + override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) + override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.locationid, fields.shelf, fields.bin, fields.quantity, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala index a7716d625e..e953583eec 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoImpl.scala @@ -32,7 +32,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { sql"""delete from production.productinventory where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "locationid" = ${Segment.paramSegment(compositeId.locationid)(LocationId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilder("production.productinventory", ProductinventoryFields) + DeleteBuilder("production.productinventory", ProductinventoryFields.structure) } override def insert(unsaved: ProductinventoryRow): ZIO[ZConnection, Throwable, ProductinventoryRow] = { sql"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") @@ -80,7 +80,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { streamingInsert(s"""COPY production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductinventoryRowUnsaved.text) } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderSql("production.productinventory", ProductinventoryFields, ProductinventoryRow.jdbcDecoder) + SelectBuilderSql("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductinventoryRow] = { sql"""select "productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate"::text from production.productinventory""".query(ProductinventoryRow.jdbcDecoder).selectStream @@ -99,7 +99,7 @@ class ProductinventoryRepoImpl extends ProductinventoryRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "locationid" = ${Segment.paramSegment(compositeId.locationid)(LocationId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilder("production.productinventory", ProductinventoryFields, ProductinventoryRow.jdbcDecoder) + UpdateBuilder("production.productinventory", ProductinventoryFields.structure, ProductinventoryRow.jdbcDecoder) } override def upsert(unsaved: ProductinventoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductinventoryRow]] = { sql"""insert into production.productinventory("productid", "locationid", "shelf", "bin", "quantity", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala index 9da4937a56..1beb9324d2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryRepoMock.scala @@ -29,7 +29,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductinventoryFields, ProductinventoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductinventoryFields.structure.fields, map) } override def insert(unsaved: ProductinventoryRow): ZIO[ZConnection, Throwable, ProductinventoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductinventoryFields, ProductinventoryRow] = { - SelectBuilderMock(ProductinventoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductinventoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductinventoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductinventoryRepoMock(toRow: Function1[ProductinventoryRowUnsaved, Prod } } override def update: UpdateBuilder[ProductinventoryFields, ProductinventoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductinventoryFields.structure.fields, map) } override def upsert(unsaved: ProductinventoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductinventoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala deleted file mode 100644 index d900c732e0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productinventory/ProductinventoryStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productinventory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.location.LocationId -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductinventoryStructure[Row](val prefix: Option[String], val extract: Row => ProductinventoryRow, val merge: (Row, ProductinventoryRow) => Row) - extends Relation[ProductinventoryFields, ProductinventoryRow, Row] - with ProductinventoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val locationid = new IdField[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val shelf = new Field[/* max 10 chars */ String, Row](prefix, "shelf", None, None)(x => extract(x).shelf, (row, value) => merge(row, extract(row).copy(shelf = value))) - override val bin = new Field[TypoShort, Row](prefix, "bin", None, Some("int2"))(x => extract(x).bin, (row, value) => merge(row, extract(row).copy(bin = value))) - override val quantity = new Field[TypoShort, Row](prefix, "quantity", None, Some("int2"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, locationid, shelf, bin, quantity, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductinventoryRow, merge: (NewRow, ProductinventoryRow) => NewRow): ProductinventoryStructure[NewRow] = - new ProductinventoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala index 260089c642..3e7f682a75 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryFields.scala @@ -10,8 +10,10 @@ package productlistpricehistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductlistpricehistoryFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,27 @@ trait ProductlistpricehistoryFields[Row] { val listprice: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductlistpricehistoryFields extends ProductlistpricehistoryStructure[ProductlistpricehistoryRow](None, identity, (_, x) => x) +object ProductlistpricehistoryFields { + val structure: Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, ProductlistpricehistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) + extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] { + + override val fields: ProductlistpricehistoryFields[Row] = new ProductlistpricehistoryFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.startdate, fields.enddate, fields.listprice, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala index 8f039900d2..c1bedec113 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoImpl.scala @@ -29,7 +29,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { sql"""delete from production.productlistpricehistory where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields) + DeleteBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure) } override def insert(unsaved: ProductlistpricehistoryRow): ZIO[ZConnection, Throwable, ProductlistpricehistoryRow] = { sql"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") @@ -69,7 +69,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { streamingInsert(s"""COPY production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductlistpricehistoryRowUnsaved.text) } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.jdbcDecoder) + SelectBuilderSql("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductlistpricehistoryRow] = { sql"""select "productid", "startdate"::text, "enddate"::text, "listprice", "modifieddate"::text from production.productlistpricehistory""".query(ProductlistpricehistoryRow.jdbcDecoder).selectStream @@ -86,7 +86,7 @@ class ProductlistpricehistoryRepoImpl extends ProductlistpricehistoryRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields, ProductlistpricehistoryRow.jdbcDecoder) + UpdateBuilder("production.productlistpricehistory", ProductlistpricehistoryFields.structure, ProductlistpricehistoryRow.jdbcDecoder) } override def upsert(unsaved: ProductlistpricehistoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductlistpricehistoryRow]] = { sql"""insert into production.productlistpricehistory("productid", "startdate", "enddate", "listprice", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala index 166b44a5e8..cae9f082fc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryRepoMock.scala @@ -29,7 +29,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def insert(unsaved: ProductlistpricehistoryRow): ZIO[ZConnection, Throwable, ProductlistpricehistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - SelectBuilderMock(ProductlistpricehistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductlistpricehistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductlistpricehistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductlistpricehistoryRepoMock(toRow: Function1[ProductlistpricehistoryRo } } override def update: UpdateBuilder[ProductlistpricehistoryFields, ProductlistpricehistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductlistpricehistoryFields.structure.fields, map) } override def upsert(unsaved: ProductlistpricehistoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductlistpricehistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala deleted file mode 100644 index 042698e344..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productlistpricehistory/ProductlistpricehistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productlistpricehistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductlistpricehistoryStructure[Row](val prefix: Option[String], val extract: Row => ProductlistpricehistoryRow, val merge: (Row, ProductlistpricehistoryRow) => Row) - extends Relation[ProductlistpricehistoryFields, ProductlistpricehistoryRow, Row] - with ProductlistpricehistoryFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val listprice = new Field[BigDecimal, Row](prefix, "listprice", None, Some("numeric"))(x => extract(x).listprice, (row, value) => merge(row, extract(row).copy(listprice = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, startdate, enddate, listprice, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductlistpricehistoryRow, merge: (NewRow, ProductlistpricehistoryRow) => NewRow): ProductlistpricehistoryStructure[NewRow] = - new ProductlistpricehistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala index 2437f0c667..cb5a586235 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.customtypes.TypoXml import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductmodelFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -23,5 +25,28 @@ trait ProductmodelFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelFields extends ProductmodelStructure[ProductmodelRow](None, identity, (_, x) => x) +object ProductmodelFields { + val structure: Relation[ProductmodelFields, ProductmodelRow, ProductmodelRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) + extends Relation[ProductmodelFields, ProductmodelRow, Row] { + + override val fields: ProductmodelFields[Row] = new ProductmodelFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) + override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.catalogdescription, fields.instructions, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala index 4855b39663..22dca7f689 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoImpl.scala @@ -31,7 +31,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { sql"""delete from production.productmodel where "productmodelid" = ${Segment.paramSegment(productmodelid)(ProductmodelId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilder("production.productmodel", ProductmodelFields) + DeleteBuilder("production.productmodel", ProductmodelFields.structure) } override def insert(unsaved: ProductmodelRow): ZIO[ZConnection, Throwable, ProductmodelRow] = { sql"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { streamingInsert(s"""COPY production.productmodel("name", "catalogdescription", "instructions", "productmodelid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelRowUnsaved.text) } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderSql("production.productmodel", ProductmodelFields, ProductmodelRow.jdbcDecoder) + SelectBuilderSql("production.productmodel", ProductmodelFields.structure, ProductmodelRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelRow] = { sql"""select "productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate"::text from production.productmodel""".query(ProductmodelRow.jdbcDecoder).selectStream @@ -100,7 +100,7 @@ class ProductmodelRepoImpl extends ProductmodelRepo { where "productmodelid" = ${Segment.paramSegment(productmodelid)(ProductmodelId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilder("production.productmodel", ProductmodelFields, ProductmodelRow.jdbcDecoder) + UpdateBuilder("production.productmodel", ProductmodelFields.structure, ProductmodelRow.jdbcDecoder) } override def upsert(unsaved: ProductmodelRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelRow]] = { sql"""insert into production.productmodel("productmodelid", "name", "catalogdescription", "instructions", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala index 446d8da629..26833f47a9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelRepoMock.scala @@ -29,7 +29,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel ZIO.succeed(map.remove(productmodelid).isDefined) } override def delete: DeleteBuilder[ProductmodelFields, ProductmodelRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelFields.structure.fields, map) } override def insert(unsaved: ProductmodelRow): ZIO[ZConnection, Throwable, ProductmodelRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductmodelFields, ProductmodelRow] = { - SelectBuilderMock(ProductmodelFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductmodelFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductmodelRepoMock(toRow: Function1[ProductmodelRowUnsaved, Productmodel } } override def update: UpdateBuilder[ProductmodelFields, ProductmodelRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelFields.structure.fields, map) } override def upsert(unsaved: ProductmodelRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala deleted file mode 100644 index a1285ade93..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodel/ProductmodelStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodel - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductmodelStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelRow, val merge: (Row, ProductmodelRow) => Row) - extends Relation[ProductmodelFields, ProductmodelRow, Row] - with ProductmodelFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val catalogdescription = new OptField[TypoXml, Row](prefix, "catalogdescription", None, Some("xml"))(x => extract(x).catalogdescription, (row, value) => merge(row, extract(row).copy(catalogdescription = value))) - override val instructions = new OptField[TypoXml, Row](prefix, "instructions", None, Some("xml"))(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, catalogdescription, instructions, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelRow, merge: (NewRow, ProductmodelRow) => NewRow): ProductmodelStructure[NewRow] = - new ProductmodelStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala index dbdfb81ca0..0c238569fc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.illustration.IllustrationId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelillustrationFields[Row] { val productmodelid: IdField[ProductmodelId, Row] val illustrationid: IdField[IllustrationId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelillustrationFields extends ProductmodelillustrationStructure[ProductmodelillustrationRow](None, identity, (_, x) => x) +object ProductmodelillustrationFields { + val structure: Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, ProductmodelillustrationRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) + extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] { + + override val fields: ProductmodelillustrationFields[Row] = new ProductmodelillustrationFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.illustrationid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala index a39aa97fff..e106104577 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoImpl.scala @@ -29,7 +29,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { sql"""delete from production.productmodelillustration where "productmodelid" = ${Segment.paramSegment(compositeId.productmodelid)(ProductmodelId.setter)} AND "illustrationid" = ${Segment.paramSegment(compositeId.illustrationid)(IllustrationId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields) + DeleteBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure) } override def insert(unsaved: ProductmodelillustrationRow): ZIO[ZConnection, Throwable, ProductmodelillustrationRow] = { sql"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") @@ -67,7 +67,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { streamingInsert(s"""COPY production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelillustrationRowUnsaved.text) } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.jdbcDecoder) + SelectBuilderSql("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelillustrationRow] = { sql"""select "productmodelid", "illustrationid", "modifieddate"::text from production.productmodelillustration""".query(ProductmodelillustrationRow.jdbcDecoder).selectStream @@ -82,7 +82,7 @@ class ProductmodelillustrationRepoImpl extends ProductmodelillustrationRepo { where "productmodelid" = ${Segment.paramSegment(compositeId.productmodelid)(ProductmodelId.setter)} AND "illustrationid" = ${Segment.paramSegment(compositeId.illustrationid)(IllustrationId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields, ProductmodelillustrationRow.jdbcDecoder) + UpdateBuilder("production.productmodelillustration", ProductmodelillustrationFields.structure, ProductmodelillustrationRow.jdbcDecoder) } override def upsert(unsaved: ProductmodelillustrationRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelillustrationRow]] = { sql"""insert into production.productmodelillustration("productmodelid", "illustrationid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala index eb1863efc6..4f647269b6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationRepoMock.scala @@ -29,7 +29,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def insert(unsaved: ProductmodelillustrationRow): ZIO[ZConnection, Throwable, ProductmodelillustrationRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - SelectBuilderMock(ProductmodelillustrationFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductmodelillustrationFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelillustrationRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductmodelillustrationRepoMock(toRow: Function1[Productmodelillustration } } override def update: UpdateBuilder[ProductmodelillustrationFields, ProductmodelillustrationRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelillustrationFields.structure.fields, map) } override def upsert(unsaved: ProductmodelillustrationRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelillustrationRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala deleted file mode 100644 index e5e930457e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelillustration/ProductmodelillustrationStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelillustration - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.illustration.IllustrationId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelillustrationStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelillustrationRow, val merge: (Row, ProductmodelillustrationRow) => Row) - extends Relation[ProductmodelillustrationFields, ProductmodelillustrationRow, Row] - with ProductmodelillustrationFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val illustrationid = new IdField[IllustrationId, Row](prefix, "illustrationid", None, Some("int4"))(x => extract(x).illustrationid, (row, value) => merge(row, extract(row).copy(illustrationid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, illustrationid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelillustrationRow, merge: (NewRow, ProductmodelillustrationRow) => NewRow): ProductmodelillustrationStructure[NewRow] = - new ProductmodelillustrationStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala index bf16342ec5..52ccc50b47 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.culture.CultureId import adventureworks.production.productdescription.ProductdescriptionId import adventureworks.production.productmodel.ProductmodelId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductmodelproductdescriptioncultureFields[Row] { val productmodelid: IdField[ProductmodelId, Row] @@ -20,5 +22,26 @@ trait ProductmodelproductdescriptioncultureFields[Row] { val cultureid: IdField[CultureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductmodelproductdescriptioncultureFields extends ProductmodelproductdescriptioncultureStructure[ProductmodelproductdescriptioncultureRow](None, identity, (_, x) => x) +object ProductmodelproductdescriptioncultureFields { + val structure: Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, ProductmodelproductdescriptioncultureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) + extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] { + + override val fields: ProductmodelproductdescriptioncultureFields[Row] = new ProductmodelproductdescriptioncultureFields[Row] { + override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) + override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.productdescriptionid, fields.cultureid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala index d8e24a5cd8..de794de398 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoImpl.scala @@ -30,7 +30,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd sql"""delete from production.productmodelproductdescriptionculture where "productmodelid" = ${Segment.paramSegment(compositeId.productmodelid)(ProductmodelId.setter)} AND "productdescriptionid" = ${Segment.paramSegment(compositeId.productdescriptionid)(ProductdescriptionId.setter)} AND "cultureid" = ${Segment.paramSegment(compositeId.cultureid)(CultureId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields) + DeleteBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow): ZIO[ZConnection, Throwable, ProductmodelproductdescriptioncultureRow] = { sql"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") @@ -69,7 +69,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd streamingInsert(s"""COPY production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductmodelproductdescriptioncultureRowUnsaved.text) } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.jdbcDecoder) + SelectBuilderSql("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelproductdescriptioncultureRow] = { sql"""select "productmodelid", "productdescriptionid", "cultureid", "modifieddate"::text from production.productmodelproductdescriptionculture""".query(ProductmodelproductdescriptioncultureRow.jdbcDecoder).selectStream @@ -84,7 +84,7 @@ class ProductmodelproductdescriptioncultureRepoImpl extends Productmodelproductd where "productmodelid" = ${Segment.paramSegment(compositeId.productmodelid)(ProductmodelId.setter)} AND "productdescriptionid" = ${Segment.paramSegment(compositeId.productdescriptionid)(ProductdescriptionId.setter)} AND "cultureid" = ${Segment.paramSegment(compositeId.cultureid)(CultureId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow.jdbcDecoder) + UpdateBuilder("production.productmodelproductdescriptionculture", ProductmodelproductdescriptioncultureFields.structure, ProductmodelproductdescriptioncultureRow.jdbcDecoder) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelproductdescriptioncultureRow]] = { sql"""insert into production.productmodelproductdescriptionculture("productmodelid", "productdescriptionid", "cultureid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala index 2e0d5ce665..f4c3ff8d09 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureRepoMock.scala @@ -29,7 +29,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def insert(unsaved: ProductmodelproductdescriptioncultureRow): ZIO[ZConnection, Throwable, ProductmodelproductdescriptioncultureRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - SelectBuilderMock(ProductmodelproductdescriptioncultureFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductmodelproductdescriptioncultureFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductmodelproductdescriptioncultureRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductmodelproductdescriptioncultureRepoMock(toRow: Function1[Productmode } } override def update: UpdateBuilder[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductmodelproductdescriptioncultureFields.structure.fields, map) } override def upsert(unsaved: ProductmodelproductdescriptioncultureRow): ZIO[ZConnection, Throwable, UpdateResult[ProductmodelproductdescriptioncultureRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala deleted file mode 100644 index 68bba1a170..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productmodelproductdescriptionculture/ProductmodelproductdescriptioncultureStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productmodelproductdescriptionculture - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.culture.CultureId -import adventureworks.production.productdescription.ProductdescriptionId -import adventureworks.production.productmodel.ProductmodelId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductmodelproductdescriptioncultureStructure[Row](val prefix: Option[String], val extract: Row => ProductmodelproductdescriptioncultureRow, val merge: (Row, ProductmodelproductdescriptioncultureRow) => Row) - extends Relation[ProductmodelproductdescriptioncultureFields, ProductmodelproductdescriptioncultureRow, Row] - with ProductmodelproductdescriptioncultureFields[Row] { outer => - - override val productmodelid = new IdField[ProductmodelId, Row](prefix, "productmodelid", None, Some("int4"))(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val productdescriptionid = new IdField[ProductdescriptionId, Row](prefix, "productdescriptionid", None, Some("int4"))(x => extract(x).productdescriptionid, (row, value) => merge(row, extract(row).copy(productdescriptionid = value))) - override val cultureid = new IdField[CultureId, Row](prefix, "cultureid", None, Some("bpchar"))(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, productdescriptionid, cultureid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductmodelproductdescriptioncultureRow, merge: (NewRow, ProductmodelproductdescriptioncultureRow) => NewRow): ProductmodelproductdescriptioncultureStructure[NewRow] = - new ProductmodelproductdescriptioncultureStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala index 1629445e71..291433253d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoFields.scala @@ -10,8 +10,10 @@ package productphoto import adventureworks.customtypes.TypoBytea import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductphotoFields[Row] { val productphotoid: IdField[ProductphotoId, Row] @@ -21,5 +23,28 @@ trait ProductphotoFields[Row] { val largephotofilename: OptField[/* max 50 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductphotoFields extends ProductphotoStructure[ProductphotoRow](None, identity, (_, x) => x) +object ProductphotoFields { + val structure: Relation[ProductphotoFields, ProductphotoRow, ProductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) + extends Relation[ProductphotoFields, ProductphotoRow, Row] { + + override val fields: ProductphotoFields[Row] = new ProductphotoFields[Row] { + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) + override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) + override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) + override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productphotoid, fields.thumbnailphoto, fields.thumbnailphotofilename, fields.largephoto, fields.largephotofilename, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala index d85a22c82f..4528b02d5d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoImpl.scala @@ -29,7 +29,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { sql"""delete from production.productphoto where "productphotoid" = ${Segment.paramSegment(productphotoid)(ProductphotoId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilder("production.productphoto", ProductphotoFields) + DeleteBuilder("production.productphoto", ProductphotoFields.structure) } override def insert(unsaved: ProductphotoRow): ZIO[ZConnection, Throwable, ProductphotoRow] = { sql"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") @@ -73,7 +73,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { streamingInsert(s"""COPY production.productphoto("thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "productphotoid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductphotoRowUnsaved.text) } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderSql("production.productphoto", ProductphotoFields, ProductphotoRow.jdbcDecoder) + SelectBuilderSql("production.productphoto", ProductphotoFields.structure, ProductphotoRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductphotoRow] = { sql"""select "productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate"::text from production.productphoto""".query(ProductphotoRow.jdbcDecoder).selectStream @@ -95,7 +95,7 @@ class ProductphotoRepoImpl extends ProductphotoRepo { where "productphotoid" = ${Segment.paramSegment(productphotoid)(ProductphotoId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilder("production.productphoto", ProductphotoFields, ProductphotoRow.jdbcDecoder) + UpdateBuilder("production.productphoto", ProductphotoFields.structure, ProductphotoRow.jdbcDecoder) } override def upsert(unsaved: ProductphotoRow): ZIO[ZConnection, Throwable, UpdateResult[ProductphotoRow]] = { sql"""insert into production.productphoto("productphotoid", "thumbnailphoto", "thumbnailphotofilename", "largephoto", "largephotofilename", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala index 5d69ff2c61..5d2f8ce212 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoRepoMock.scala @@ -29,7 +29,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto ZIO.succeed(map.remove(productphotoid).isDefined) } override def delete: DeleteBuilder[ProductphotoFields, ProductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductphotoFields.structure.fields, map) } override def insert(unsaved: ProductphotoRow): ZIO[ZConnection, Throwable, ProductphotoRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductphotoFields, ProductphotoRow] = { - SelectBuilderMock(ProductphotoFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductphotoFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductphotoRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductphotoRepoMock(toRow: Function1[ProductphotoRowUnsaved, Productphoto } } override def update: UpdateBuilder[ProductphotoFields, ProductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductphotoRow): ZIO[ZConnection, Throwable, UpdateResult[ProductphotoRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala deleted file mode 100644 index 5d6d6be4d0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productphoto/ProductphotoStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productphoto - -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductphotoRow, val merge: (Row, ProductphotoRow) => Row) - extends Relation[ProductphotoFields, ProductphotoRow, Row] - with ProductphotoFields[Row] { outer => - - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val thumbnailphoto = new OptField[TypoBytea, Row](prefix, "thumbnailphoto", None, Some("bytea"))(x => extract(x).thumbnailphoto, (row, value) => merge(row, extract(row).copy(thumbnailphoto = value))) - override val thumbnailphotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "thumbnailphotofilename", None, None)(x => extract(x).thumbnailphotofilename, (row, value) => merge(row, extract(row).copy(thumbnailphotofilename = value))) - override val largephoto = new OptField[TypoBytea, Row](prefix, "largephoto", None, Some("bytea"))(x => extract(x).largephoto, (row, value) => merge(row, extract(row).copy(largephoto = value))) - override val largephotofilename = new OptField[/* max 50 chars */ String, Row](prefix, "largephotofilename", None, None)(x => extract(x).largephotofilename, (row, value) => merge(row, extract(row).copy(largephotofilename = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productphotoid, thumbnailphoto, thumbnailphotofilename, largephoto, largephotofilename, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductphotoRow, merge: (NewRow, ProductphotoRow) => NewRow): ProductphotoStructure[NewRow] = - new ProductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala index 4890db8c2f..930619043e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoFields.scala @@ -12,7 +12,9 @@ import adventureworks.production.product.ProductId import adventureworks.production.productphoto.ProductphotoId import adventureworks.public.Flag import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductproductphotoFields[Row] { val productid: IdField[ProductId, Row] @@ -20,5 +22,26 @@ trait ProductproductphotoFields[Row] { val primary: Field[Flag, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductproductphotoFields extends ProductproductphotoStructure[ProductproductphotoRow](None, identity, (_, x) => x) +object ProductproductphotoFields { + val structure: Relation[ProductproductphotoFields, ProductproductphotoRow, ProductproductphotoRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) + extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] { + + override val fields: ProductproductphotoFields[Row] = new ProductproductphotoFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.productphotoid, fields.primary, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala index 4a1dc96eb1..da6504290e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoImpl.scala @@ -30,7 +30,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { sql"""delete from production.productproductphoto where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "productphotoid" = ${Segment.paramSegment(compositeId.productphotoid)(ProductphotoId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilder("production.productproductphoto", ProductproductphotoFields) + DeleteBuilder("production.productproductphoto", ProductproductphotoFields.structure) } override def insert(unsaved: ProductproductphotoRow): ZIO[ZConnection, Throwable, ProductproductphotoRow] = { sql"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") @@ -72,7 +72,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { streamingInsert(s"""COPY production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductproductphotoRowUnsaved.text) } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderSql("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.jdbcDecoder) + SelectBuilderSql("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductproductphotoRow] = { sql"""select "productid", "productphotoid", "primary", "modifieddate"::text from production.productproductphoto""".query(ProductproductphotoRow.jdbcDecoder).selectStream @@ -88,7 +88,7 @@ class ProductproductphotoRepoImpl extends ProductproductphotoRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "productphotoid" = ${Segment.paramSegment(compositeId.productphotoid)(ProductphotoId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilder("production.productproductphoto", ProductproductphotoFields, ProductproductphotoRow.jdbcDecoder) + UpdateBuilder("production.productproductphoto", ProductproductphotoFields.structure, ProductproductphotoRow.jdbcDecoder) } override def upsert(unsaved: ProductproductphotoRow): ZIO[ZConnection, Throwable, UpdateResult[ProductproductphotoRow]] = { sql"""insert into production.productproductphoto("productid", "productphotoid", "primary", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala index 5b0499f484..69d4e24f31 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoRepoMock.scala @@ -29,7 +29,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductproductphotoFields.structure.fields, map) } override def insert(unsaved: ProductproductphotoRow): ZIO[ZConnection, Throwable, ProductproductphotoRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - SelectBuilderMock(ProductproductphotoFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductproductphotoFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductproductphotoRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductproductphotoRepoMock(toRow: Function1[ProductproductphotoRowUnsaved } } override def update: UpdateBuilder[ProductproductphotoFields, ProductproductphotoRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductproductphotoFields.structure.fields, map) } override def upsert(unsaved: ProductproductphotoRow): ZIO[ZConnection, Throwable, UpdateResult[ProductproductphotoRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala deleted file mode 100644 index 2ddbdadac0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productproductphoto/ProductproductphotoStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productproductphoto - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.production.productphoto.ProductphotoId -import adventureworks.public.Flag -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductproductphotoStructure[Row](val prefix: Option[String], val extract: Row => ProductproductphotoRow, val merge: (Row, ProductproductphotoRow) => Row) - extends Relation[ProductproductphotoFields, ProductproductphotoRow, Row] - with ProductproductphotoFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val productphotoid = new IdField[ProductphotoId, Row](prefix, "productphotoid", None, Some("int4"))(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val primary = new Field[Flag, Row](prefix, "primary", None, Some("bool"))(x => extract(x).primary, (row, value) => merge(row, extract(row).copy(primary = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, productphotoid, primary, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductproductphotoRow, merge: (NewRow, ProductproductphotoRow) => NewRow): ProductproductphotoStructure[NewRow] = - new ProductproductphotoStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala index 7c631f3779..4adead7192 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewFields.scala @@ -11,8 +11,10 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductreviewFields[Row] { val productreviewid: IdField[ProductreviewId, Row] @@ -24,5 +26,30 @@ trait ProductreviewFields[Row] { val comments: OptField[/* max 3850 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductreviewFields extends ProductreviewStructure[ProductreviewRow](None, identity, (_, x) => x) +object ProductreviewFields { + val structure: Relation[ProductreviewFields, ProductreviewRow, ProductreviewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) + extends Relation[ProductreviewFields, ProductreviewRow, Row] { + + override val fields: ProductreviewFields[Row] = new ProductreviewFields[Row] { + override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) + override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) + override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) + override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productreviewid, fields.productid, fields.reviewername, fields.reviewdate, fields.emailaddress, fields.rating, fields.comments, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala index d3448211ac..be338ddac5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoImpl.scala @@ -30,7 +30,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { sql"""delete from production.productreview where "productreviewid" = ${Segment.paramSegment(productreviewid)(ProductreviewId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilder("production.productreview", ProductreviewFields) + DeleteBuilder("production.productreview", ProductreviewFields.structure) } override def insert(unsaved: ProductreviewRow): ZIO[ZConnection, Throwable, ProductreviewRow] = { sql"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") @@ -79,7 +79,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { streamingInsert(s"""COPY production.productreview("productid", "reviewername", "emailaddress", "rating", "comments", "productreviewid", "reviewdate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductreviewRowUnsaved.text) } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderSql("production.productreview", ProductreviewFields, ProductreviewRow.jdbcDecoder) + SelectBuilderSql("production.productreview", ProductreviewFields.structure, ProductreviewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductreviewRow] = { sql"""select "productreviewid", "productid", "reviewername", "reviewdate"::text, "emailaddress", "rating", "comments", "modifieddate"::text from production.productreview""".query(ProductreviewRow.jdbcDecoder).selectStream @@ -103,7 +103,7 @@ class ProductreviewRepoImpl extends ProductreviewRepo { where "productreviewid" = ${Segment.paramSegment(productreviewid)(ProductreviewId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilder("production.productreview", ProductreviewFields, ProductreviewRow.jdbcDecoder) + UpdateBuilder("production.productreview", ProductreviewFields.structure, ProductreviewRow.jdbcDecoder) } override def upsert(unsaved: ProductreviewRow): ZIO[ZConnection, Throwable, UpdateResult[ProductreviewRow]] = { sql"""insert into production.productreview("productreviewid", "productid", "reviewername", "reviewdate", "emailaddress", "rating", "comments", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala index e8d83978b1..043e182b11 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewRepoMock.scala @@ -29,7 +29,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev ZIO.succeed(map.remove(productreviewid).isDefined) } override def delete: DeleteBuilder[ProductreviewFields, ProductreviewRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductreviewFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductreviewFields.structure.fields, map) } override def insert(unsaved: ProductreviewRow): ZIO[ZConnection, Throwable, ProductreviewRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductreviewFields, ProductreviewRow] = { - SelectBuilderMock(ProductreviewFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductreviewFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductreviewRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductreviewRepoMock(toRow: Function1[ProductreviewRowUnsaved, Productrev } } override def update: UpdateBuilder[ProductreviewFields, ProductreviewRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductreviewFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductreviewFields.structure.fields, map) } override def upsert(unsaved: ProductreviewRow): ZIO[ZConnection, Throwable, UpdateResult[ProductreviewRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala deleted file mode 100644 index e7eca2f48d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productreview/ProductreviewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productreview - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductreviewStructure[Row](val prefix: Option[String], val extract: Row => ProductreviewRow, val merge: (Row, ProductreviewRow) => Row) - extends Relation[ProductreviewFields, ProductreviewRow, Row] - with ProductreviewFields[Row] { outer => - - override val productreviewid = new IdField[ProductreviewId, Row](prefix, "productreviewid", None, Some("int4"))(x => extract(x).productreviewid, (row, value) => merge(row, extract(row).copy(productreviewid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val reviewername = new Field[Name, Row](prefix, "reviewername", None, Some("varchar"))(x => extract(x).reviewername, (row, value) => merge(row, extract(row).copy(reviewername = value))) - override val reviewdate = new Field[TypoLocalDateTime, Row](prefix, "reviewdate", Some("text"), Some("timestamp"))(x => extract(x).reviewdate, (row, value) => merge(row, extract(row).copy(reviewdate = value))) - override val emailaddress = new Field[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val rating = new Field[Int, Row](prefix, "rating", None, Some("int4"))(x => extract(x).rating, (row, value) => merge(row, extract(row).copy(rating = value))) - override val comments = new OptField[/* max 3850 chars */ String, Row](prefix, "comments", None, None)(x => extract(x).comments, (row, value) => merge(row, extract(row).copy(comments = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productreviewid, productid, reviewername, reviewdate, emailaddress, rating, comments, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductreviewRow, merge: (NewRow, ProductreviewRow) => NewRow): ProductreviewStructure[NewRow] = - new ProductreviewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala index 7aaa9eaa8c..023f125696 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productcategory.ProductcategoryId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ProductsubcategoryFields[Row] { val productsubcategoryid: IdField[ProductsubcategoryId, Row] @@ -21,5 +23,27 @@ trait ProductsubcategoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductsubcategoryFields extends ProductsubcategoryStructure[ProductsubcategoryRow](None, identity, (_, x) => x) +object ProductsubcategoryFields { + val structure: Relation[ProductsubcategoryFields, ProductsubcategoryRow, ProductsubcategoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) + extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] { + + override val fields: ProductsubcategoryFields[Row] = new ProductsubcategoryFields[Row] { + override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) + override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productsubcategoryid, fields.productcategoryid, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala index b7c85e5797..882890dc51 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoImpl.scala @@ -30,7 +30,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { sql"""delete from production.productsubcategory where "productsubcategoryid" = ${Segment.paramSegment(productsubcategoryid)(ProductsubcategoryId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilder("production.productsubcategory", ProductsubcategoryFields) + DeleteBuilder("production.productsubcategory", ProductsubcategoryFields.structure) } override def insert(unsaved: ProductsubcategoryRow): ZIO[ZConnection, Throwable, ProductsubcategoryRow] = { sql"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") @@ -76,7 +76,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { streamingInsert(s"""COPY production.productsubcategory("productcategoryid", "name", "productsubcategoryid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductsubcategoryRowUnsaved.text) } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.jdbcDecoder) + SelectBuilderSql("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductsubcategoryRow] = { sql"""select "productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate"::text from production.productsubcategory""".query(ProductsubcategoryRow.jdbcDecoder).selectStream @@ -97,7 +97,7 @@ class ProductsubcategoryRepoImpl extends ProductsubcategoryRepo { where "productsubcategoryid" = ${Segment.paramSegment(productsubcategoryid)(ProductsubcategoryId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilder("production.productsubcategory", ProductsubcategoryFields, ProductsubcategoryRow.jdbcDecoder) + UpdateBuilder("production.productsubcategory", ProductsubcategoryFields.structure, ProductsubcategoryRow.jdbcDecoder) } override def upsert(unsaved: ProductsubcategoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductsubcategoryRow]] = { sql"""insert into production.productsubcategory("productsubcategoryid", "productcategoryid", "name", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala index 3f24aff6ef..0119af67c4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryRepoMock.scala @@ -29,7 +29,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, ZIO.succeed(map.remove(productsubcategoryid).isDefined) } override def delete: DeleteBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductsubcategoryFields.structure.fields, map) } override def insert(unsaved: ProductsubcategoryRow): ZIO[ZConnection, Throwable, ProductsubcategoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - SelectBuilderMock(ProductsubcategoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductsubcategoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductsubcategoryRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ProductsubcategoryRepoMock(toRow: Function1[ProductsubcategoryRowUnsaved, } } override def update: UpdateBuilder[ProductsubcategoryFields, ProductsubcategoryRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductsubcategoryFields.structure.fields, map) } override def upsert(unsaved: ProductsubcategoryRow): ZIO[ZConnection, Throwable, UpdateResult[ProductsubcategoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala deleted file mode 100644 index 252d890975..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/productsubcategory/ProductsubcategoryStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package productsubcategory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productcategory.ProductcategoryId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ProductsubcategoryStructure[Row](val prefix: Option[String], val extract: Row => ProductsubcategoryRow, val merge: (Row, ProductsubcategoryRow) => Row) - extends Relation[ProductsubcategoryFields, ProductsubcategoryRow, Row] - with ProductsubcategoryFields[Row] { outer => - - override val productsubcategoryid = new IdField[ProductsubcategoryId, Row](prefix, "productsubcategoryid", None, Some("int4"))(x => extract(x).productsubcategoryid, (row, value) => merge(row, extract(row).copy(productsubcategoryid = value))) - override val productcategoryid = new Field[ProductcategoryId, Row](prefix, "productcategoryid", None, Some("int4"))(x => extract(x).productcategoryid, (row, value) => merge(row, extract(row).copy(productcategoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productsubcategoryid, productcategoryid, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductsubcategoryRow, merge: (NewRow, ProductsubcategoryRow) => NewRow): ProductsubcategoryStructure[NewRow] = - new ProductsubcategoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala index ca072f007e..54c8b879a7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonFields.scala @@ -10,12 +10,34 @@ package scrapreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ScrapreasonFields[Row] { val scrapreasonid: IdField[ScrapreasonId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ScrapreasonFields extends ScrapreasonStructure[ScrapreasonRow](None, identity, (_, x) => x) +object ScrapreasonFields { + val structure: Relation[ScrapreasonFields, ScrapreasonRow, ScrapreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) + extends Relation[ScrapreasonFields, ScrapreasonRow, Row] { + + override val fields: ScrapreasonFields[Row] = new ScrapreasonFields[Row] { + override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.scrapreasonid, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala index 2352b5409f..7436628742 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoImpl.scala @@ -28,7 +28,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { sql"""delete from production.scrapreason where "scrapreasonid" = ${Segment.paramSegment(scrapreasonid)(ScrapreasonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilder("production.scrapreason", ScrapreasonFields) + DeleteBuilder("production.scrapreason", ScrapreasonFields.structure) } override def insert(unsaved: ScrapreasonRow): ZIO[ZConnection, Throwable, ScrapreasonRow] = { sql"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") @@ -69,7 +69,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { streamingInsert(s"""COPY production.scrapreason("name", "scrapreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ScrapreasonRowUnsaved.text) } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderSql("production.scrapreason", ScrapreasonFields, ScrapreasonRow.jdbcDecoder) + SelectBuilderSql("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ScrapreasonRow] = { sql"""select "scrapreasonid", "name", "modifieddate"::text from production.scrapreason""".query(ScrapreasonRow.jdbcDecoder).selectStream @@ -88,7 +88,7 @@ class ScrapreasonRepoImpl extends ScrapreasonRepo { where "scrapreasonid" = ${Segment.paramSegment(scrapreasonid)(ScrapreasonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilder("production.scrapreason", ScrapreasonFields, ScrapreasonRow.jdbcDecoder) + UpdateBuilder("production.scrapreason", ScrapreasonFields.structure, ScrapreasonRow.jdbcDecoder) } override def upsert(unsaved: ScrapreasonRow): ZIO[ZConnection, Throwable, UpdateResult[ScrapreasonRow]] = { sql"""insert into production.scrapreason("scrapreasonid", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala index b381511ec5..5f3f265531 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonRepoMock.scala @@ -29,7 +29,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow ZIO.succeed(map.remove(scrapreasonid).isDefined) } override def delete: DeleteBuilder[ScrapreasonFields, ScrapreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, ScrapreasonFields.structure.fields, map) } override def insert(unsaved: ScrapreasonRow): ZIO[ZConnection, Throwable, ScrapreasonRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ScrapreasonFields, ScrapreasonRow] = { - SelectBuilderMock(ScrapreasonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ScrapreasonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ScrapreasonRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ScrapreasonRepoMock(toRow: Function1[ScrapreasonRowUnsaved, ScrapreasonRow } } override def update: UpdateBuilder[ScrapreasonFields, ScrapreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, ScrapreasonFields.structure.fields, map) } override def upsert(unsaved: ScrapreasonRow): ZIO[ZConnection, Throwable, UpdateResult[ScrapreasonRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala deleted file mode 100644 index 9d25018824..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/scrapreason/ScrapreasonStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package scrapreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ScrapreasonStructure[Row](val prefix: Option[String], val extract: Row => ScrapreasonRow, val merge: (Row, ScrapreasonRow) => Row) - extends Relation[ScrapreasonFields, ScrapreasonRow, Row] - with ScrapreasonFields[Row] { outer => - - override val scrapreasonid = new IdField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int4"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](scrapreasonid, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ScrapreasonRow, merge: (NewRow, ScrapreasonRow) => NewRow): ScrapreasonStructure[NewRow] = - new ScrapreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala index 9df57dd54b..51414ff76f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryFields.scala @@ -10,7 +10,9 @@ package transactionhistory import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryFields[Row] { val transactionid: IdField[TransactionhistoryId, Row] @@ -23,5 +25,31 @@ trait TransactionhistoryFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryFields extends TransactionhistoryStructure[TransactionhistoryRow](None, identity, (_, x) => x) +object TransactionhistoryFields { + val structure: Relation[TransactionhistoryFields, TransactionhistoryRow, TransactionhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) + extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] { + + override val fields: TransactionhistoryFields[Row] = new TransactionhistoryFields[Row] { + override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala index e0d5f7447c..654930ea9b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoImpl.scala @@ -29,7 +29,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { sql"""delete from production.transactionhistory where "transactionid" = ${Segment.paramSegment(transactionid)(TransactionhistoryId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilder("production.transactionhistory", TransactionhistoryFields) + DeleteBuilder("production.transactionhistory", TransactionhistoryFields.structure) } override def insert(unsaved: TransactionhistoryRow): ZIO[ZConnection, Throwable, TransactionhistoryRow] = { sql"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -82,7 +82,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { streamingInsert(s"""COPY production.transactionhistory("productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "transactionid", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(TransactionhistoryRowUnsaved.text) } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderSql("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.jdbcDecoder) + SelectBuilderSql("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, TransactionhistoryRow] = { sql"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from production.transactionhistory""".query(TransactionhistoryRow.jdbcDecoder).selectStream @@ -107,7 +107,7 @@ class TransactionhistoryRepoImpl extends TransactionhistoryRepo { where "transactionid" = ${Segment.paramSegment(transactionid)(TransactionhistoryId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilder("production.transactionhistory", TransactionhistoryFields, TransactionhistoryRow.jdbcDecoder) + UpdateBuilder("production.transactionhistory", TransactionhistoryFields.structure, TransactionhistoryRow.jdbcDecoder) } override def upsert(unsaved: TransactionhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[TransactionhistoryRow]] = { sql"""insert into production.transactionhistory("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala index f2afe26229..91c3e3dfb0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryRepoMock.scala @@ -29,7 +29,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, ZIO.succeed(map.remove(transactionid).isDefined) } override def delete: DeleteBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryRow): ZIO[ZConnection, Throwable, TransactionhistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - SelectBuilderMock(TransactionhistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(TransactionhistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, TransactionhistoryRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class TransactionhistoryRepoMock(toRow: Function1[TransactionhistoryRowUnsaved, } } override def update: UpdateBuilder[TransactionhistoryFields, TransactionhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[TransactionhistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala deleted file mode 100644 index f404fa5efa..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistory/TransactionhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryRow, val merge: (Row, TransactionhistoryRow) => Row) - extends Relation[TransactionhistoryFields, TransactionhistoryRow, Row] - with TransactionhistoryFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryRow, merge: (NewRow, TransactionhistoryRow) => NewRow): TransactionhistoryStructure[NewRow] = - new TransactionhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala index 3719c19452..9c35434e94 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveFields.scala @@ -9,7 +9,9 @@ package transactionhistoryarchive import adventureworks.customtypes.TypoLocalDateTime import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait TransactionhistoryarchiveFields[Row] { val transactionid: IdField[TransactionhistoryarchiveId, Row] @@ -22,5 +24,31 @@ trait TransactionhistoryarchiveFields[Row] { val actualcost: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TransactionhistoryarchiveFields extends TransactionhistoryarchiveStructure[TransactionhistoryarchiveRow](None, identity, (_, x) => x) +object TransactionhistoryarchiveFields { + val structure: Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, TransactionhistoryarchiveRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) + extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] { + + override val fields: TransactionhistoryarchiveFields[Row] = new TransactionhistoryarchiveFields[Row] { + override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) + override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) + override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) + override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) + override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.transactionid, fields.productid, fields.referenceorderid, fields.referenceorderlineid, fields.transactiondate, fields.transactiontype, fields.quantity, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala index 1b3547f563..10c2cc0522 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoImpl.scala @@ -28,7 +28,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { sql"""delete from production.transactionhistoryarchive where "transactionid" = ${Segment.paramSegment(transactionid)(TransactionhistoryarchiveId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields) + DeleteBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure) } override def insert(unsaved: TransactionhistoryarchiveRow): ZIO[ZConnection, Throwable, TransactionhistoryarchiveRow] = { sql"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") @@ -78,7 +78,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { streamingInsert(s"""COPY production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "transactiontype", "quantity", "actualcost", "referenceorderlineid", "transactiondate", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(TransactionhistoryarchiveRowUnsaved.text) } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.jdbcDecoder) + SelectBuilderSql("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, TransactionhistoryarchiveRow] = { sql"""select "transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate"::text, "transactiontype", "quantity", "actualcost", "modifieddate"::text from production.transactionhistoryarchive""".query(TransactionhistoryarchiveRow.jdbcDecoder).selectStream @@ -103,7 +103,7 @@ class TransactionhistoryarchiveRepoImpl extends TransactionhistoryarchiveRepo { where "transactionid" = ${Segment.paramSegment(transactionid)(TransactionhistoryarchiveId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields, TransactionhistoryarchiveRow.jdbcDecoder) + UpdateBuilder("production.transactionhistoryarchive", TransactionhistoryarchiveFields.structure, TransactionhistoryarchiveRow.jdbcDecoder) } override def upsert(unsaved: TransactionhistoryarchiveRow): ZIO[ZConnection, Throwable, UpdateResult[TransactionhistoryarchiveRow]] = { sql"""insert into production.transactionhistoryarchive("transactionid", "productid", "referenceorderid", "referenceorderlineid", "transactiondate", "transactiontype", "quantity", "actualcost", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala index a45d67cfde..265ad9c3b5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveRepoMock.scala @@ -29,7 +29,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi ZIO.succeed(map.remove(transactionid).isDefined) } override def delete: DeleteBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields, map) + DeleteBuilderMock(DeleteParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def insert(unsaved: TransactionhistoryarchiveRow): ZIO[ZConnection, Throwable, TransactionhistoryarchiveRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - SelectBuilderMock(TransactionhistoryarchiveFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(TransactionhistoryarchiveFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, TransactionhistoryarchiveRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class TransactionhistoryarchiveRepoMock(toRow: Function1[Transactionhistoryarchi } } override def update: UpdateBuilder[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow] = { - UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields, map) + UpdateBuilderMock(UpdateParams.empty, TransactionhistoryarchiveFields.structure.fields, map) } override def upsert(unsaved: TransactionhistoryarchiveRow): ZIO[ZConnection, Throwable, UpdateResult[TransactionhistoryarchiveRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala deleted file mode 100644 index 48ea814139..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/transactionhistoryarchive/TransactionhistoryarchiveStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package transactionhistoryarchive - -import adventureworks.customtypes.TypoLocalDateTime -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class TransactionhistoryarchiveStructure[Row](val prefix: Option[String], val extract: Row => TransactionhistoryarchiveRow, val merge: (Row, TransactionhistoryarchiveRow) => Row) - extends Relation[TransactionhistoryarchiveFields, TransactionhistoryarchiveRow, Row] - with TransactionhistoryarchiveFields[Row] { outer => - - override val transactionid = new IdField[TransactionhistoryarchiveId, Row](prefix, "transactionid", None, Some("int4"))(x => extract(x).transactionid, (row, value) => merge(row, extract(row).copy(transactionid = value))) - override val productid = new Field[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val referenceorderid = new Field[Int, Row](prefix, "referenceorderid", None, Some("int4"))(x => extract(x).referenceorderid, (row, value) => merge(row, extract(row).copy(referenceorderid = value))) - override val referenceorderlineid = new Field[Int, Row](prefix, "referenceorderlineid", None, Some("int4"))(x => extract(x).referenceorderlineid, (row, value) => merge(row, extract(row).copy(referenceorderlineid = value))) - override val transactiondate = new Field[TypoLocalDateTime, Row](prefix, "transactiondate", Some("text"), Some("timestamp"))(x => extract(x).transactiondate, (row, value) => merge(row, extract(row).copy(transactiondate = value))) - override val transactiontype = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "transactiontype", None, Some("bpchar"))(x => extract(x).transactiontype, (row, value) => merge(row, extract(row).copy(transactiontype = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val actualcost = new Field[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](transactionid, productid, referenceorderid, referenceorderlineid, transactiondate, transactiontype, quantity, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TransactionhistoryarchiveRow, merge: (NewRow, TransactionhistoryarchiveRow) => NewRow): TransactionhistoryarchiveStructure[NewRow] = - new TransactionhistoryarchiveStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala index 9f02820d0d..0f7801c2df 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureFields.scala @@ -10,12 +10,34 @@ package unitmeasure import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait UnitmeasureFields[Row] { val unitmeasurecode: IdField[UnitmeasureId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object UnitmeasureFields extends UnitmeasureStructure[UnitmeasureRow](None, identity, (_, x) => x) +object UnitmeasureFields { + val structure: Relation[UnitmeasureFields, UnitmeasureRow, UnitmeasureRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) + extends Relation[UnitmeasureFields, UnitmeasureRow, Row] { + + override val fields: UnitmeasureFields[Row] = new UnitmeasureFields[Row] { + override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.unitmeasurecode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala index 3e1e21dfdb..6c2b776f44 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoImpl.scala @@ -28,7 +28,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { sql"""delete from production.unitmeasure where "unitmeasurecode" = ${Segment.paramSegment(unitmeasurecode)(UnitmeasureId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilder("production.unitmeasure", UnitmeasureFields) + DeleteBuilder("production.unitmeasure", UnitmeasureFields.structure) } override def insert(unsaved: UnitmeasureRow): ZIO[ZConnection, Throwable, UnitmeasureRow] = { sql"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") @@ -66,7 +66,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { streamingInsert(s"""COPY production.unitmeasure("unitmeasurecode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(UnitmeasureRowUnsaved.text) } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderSql("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.jdbcDecoder) + SelectBuilderSql("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, UnitmeasureRow] = { sql"""select "unitmeasurecode", "name", "modifieddate"::text from production.unitmeasure""".query(UnitmeasureRow.jdbcDecoder).selectStream @@ -85,7 +85,7 @@ class UnitmeasureRepoImpl extends UnitmeasureRepo { where "unitmeasurecode" = ${Segment.paramSegment(unitmeasurecode)(UnitmeasureId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilder("production.unitmeasure", UnitmeasureFields, UnitmeasureRow.jdbcDecoder) + UpdateBuilder("production.unitmeasure", UnitmeasureFields.structure, UnitmeasureRow.jdbcDecoder) } override def upsert(unsaved: UnitmeasureRow): ZIO[ZConnection, Throwable, UpdateResult[UnitmeasureRow]] = { sql"""insert into production.unitmeasure("unitmeasurecode", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala index 02cdc734dd..31b7c2bb54 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureRepoMock.scala @@ -29,7 +29,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow ZIO.succeed(map.remove(unitmeasurecode).isDefined) } override def delete: DeleteBuilder[UnitmeasureFields, UnitmeasureRow] = { - DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields, map) + DeleteBuilderMock(DeleteParams.empty, UnitmeasureFields.structure.fields, map) } override def insert(unsaved: UnitmeasureRow): ZIO[ZConnection, Throwable, UnitmeasureRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[UnitmeasureFields, UnitmeasureRow] = { - SelectBuilderMock(UnitmeasureFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(UnitmeasureFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, UnitmeasureRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class UnitmeasureRepoMock(toRow: Function1[UnitmeasureRowUnsaved, UnitmeasureRow } } override def update: UpdateBuilder[UnitmeasureFields, UnitmeasureRow] = { - UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields, map) + UpdateBuilderMock(UpdateParams.empty, UnitmeasureFields.structure.fields, map) } override def upsert(unsaved: UnitmeasureRow): ZIO[ZConnection, Throwable, UpdateResult[UnitmeasureRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala deleted file mode 100644 index d6a4a84601..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/unitmeasure/UnitmeasureStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package unitmeasure - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class UnitmeasureStructure[Row](val prefix: Option[String], val extract: Row => UnitmeasureRow, val merge: (Row, UnitmeasureRow) => Row) - extends Relation[UnitmeasureFields, UnitmeasureRow, Row] - with UnitmeasureFields[Row] { outer => - - override val unitmeasurecode = new IdField[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](unitmeasurecode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UnitmeasureRow, merge: (NewRow, UnitmeasureRow) => NewRow): UnitmeasureStructure[NewRow] = - new UnitmeasureStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala index 91f56cdea4..d0afa4fdd6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVFields.scala @@ -11,6 +11,8 @@ import adventureworks.production.culture.CultureId import adventureworks.production.product.ProductId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait VproductanddescriptionMVFields[Row] { val productid: Field[ProductId, Row] @@ -19,5 +21,27 @@ trait VproductanddescriptionMVFields[Row] { val cultureid: Field[CultureId, Row] val description: Field[/* max 400 chars */ String, Row] } -object VproductanddescriptionMVFields extends VproductanddescriptionMVStructure[VproductanddescriptionMVRow](None, identity, (_, x) => x) +object VproductanddescriptionMVFields { + val structure: Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, VproductanddescriptionMVRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) + extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] { + + override val fields: VproductanddescriptionMVFields[Row] = new VproductanddescriptionMVFields[Row] { + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) + override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) + override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.name, fields.productmodel, fields.cultureid, fields.description) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala index 4d4bd11637..b61914420a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VproductanddescriptionMVRepoImpl extends VproductanddescriptionMVRepo { override def select: SelectBuilder[VproductanddescriptionMVFields, VproductanddescriptionMVRow] = { - SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields, VproductanddescriptionMVRow.jdbcDecoder) + SelectBuilderSql("production.vproductanddescription", VproductanddescriptionMVFields.structure, VproductanddescriptionMVRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VproductanddescriptionMVRow] = { sql"""select "productid", "name", "productmodel", "cultureid", "description" from production.vproductanddescription""".query(VproductanddescriptionMVRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala deleted file mode 100644 index e73b8f47cc..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductanddescription/VproductanddescriptionMVStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductanddescription - -import adventureworks.production.culture.CultureId -import adventureworks.production.product.ProductId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class VproductanddescriptionMVStructure[Row](val prefix: Option[String], val extract: Row => VproductanddescriptionMVRow, val merge: (Row, VproductanddescriptionMVRow) => Row) - extends Relation[VproductanddescriptionMVFields, VproductanddescriptionMVRow, Row] - with VproductanddescriptionMVFields[Row] { outer => - - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val productmodel = new Field[Name, Row](prefix, "productmodel", None, None)(x => extract(x).productmodel, (row, value) => merge(row, extract(row).copy(productmodel = value))) - override val cultureid = new Field[CultureId, Row](prefix, "cultureid", None, None)(x => extract(x).cultureid, (row, value) => merge(row, extract(row).copy(cultureid = value))) - override val description = new Field[/* max 400 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, name, productmodel, cultureid, description) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductanddescriptionMVRow, merge: (NewRow, VproductanddescriptionMVRow) => NewRow): VproductanddescriptionMVStructure[NewRow] = - new VproductanddescriptionMVStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala index a1ee8c8769..4b6529c054 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelcatalogdescriptionViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -41,5 +43,47 @@ trait VproductmodelcatalogdescriptionViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelcatalogdescriptionViewFields extends VproductmodelcatalogdescriptionViewStructure[VproductmodelcatalogdescriptionViewRow](None, identity, (_, x) => x) +object VproductmodelcatalogdescriptionViewFields { + val structure: Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, VproductmodelcatalogdescriptionViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) + extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] { + + override val fields: VproductmodelcatalogdescriptionViewFields[Row] = new VproductmodelcatalogdescriptionViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) + override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) + override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) + override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) + override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) + override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) + override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) + override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) + override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) + override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) + override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) + override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) + override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) + override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) + override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) + override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) + override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) + override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) + override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) + override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) + override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.Summary, fields.manufacturer, fields.copyright, fields.producturl, fields.warrantyperiod, fields.warrantydescription, fields.noofyears, fields.maintenancedescription, fields.wheel, fields.saddle, fields.pedal, fields.bikeframe, fields.crankset, fields.pictureangle, fields.picturesize, fields.productphotoid, fields.material, fields.color, fields.productline, fields.style, fields.riderexperience, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala index c35423f43f..084101104f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VproductmodelcatalogdescriptionViewRepoImpl extends VproductmodelcatalogdescriptionViewRepo { override def select: SelectBuilder[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow] = { - SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow.jdbcDecoder) + SelectBuilderSql("production.vproductmodelcatalogdescription", VproductmodelcatalogdescriptionViewFields.structure, VproductmodelcatalogdescriptionViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VproductmodelcatalogdescriptionViewRow] = { sql"""select "productmodelid", "name", "Summary", "manufacturer", "copyright", "producturl", "warrantyperiod", "warrantydescription", "noofyears", "maintenancedescription", "wheel", "saddle", "pedal", "bikeframe", "crankset", "pictureangle", "picturesize", "productphotoid", "material", "color", "productline", "style", "riderexperience", "rowguid", "modifieddate"::text from production.vproductmodelcatalogdescription""".query(VproductmodelcatalogdescriptionViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala deleted file mode 100644 index 71298da4a1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelcatalogdescription/VproductmodelcatalogdescriptionViewStructure.scala +++ /dev/null @@ -1,54 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelcatalogdescription - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelcatalogdescriptionViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelcatalogdescriptionViewRow, val merge: (Row, VproductmodelcatalogdescriptionViewRow) => Row) - extends Relation[VproductmodelcatalogdescriptionViewFields, VproductmodelcatalogdescriptionViewRow, Row] - with VproductmodelcatalogdescriptionViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val Summary = new OptField[String, Row](prefix, "Summary", None, None)(x => extract(x).Summary, (row, value) => merge(row, extract(row).copy(Summary = value))) - override val manufacturer = new OptField[String, Row](prefix, "manufacturer", None, None)(x => extract(x).manufacturer, (row, value) => merge(row, extract(row).copy(manufacturer = value))) - override val copyright = new OptField[/* max 30 chars */ String, Row](prefix, "copyright", None, None)(x => extract(x).copyright, (row, value) => merge(row, extract(row).copy(copyright = value))) - override val producturl = new OptField[/* max 256 chars */ String, Row](prefix, "producturl", None, None)(x => extract(x).producturl, (row, value) => merge(row, extract(row).copy(producturl = value))) - override val warrantyperiod = new OptField[/* max 256 chars */ String, Row](prefix, "warrantyperiod", None, None)(x => extract(x).warrantyperiod, (row, value) => merge(row, extract(row).copy(warrantyperiod = value))) - override val warrantydescription = new OptField[/* max 256 chars */ String, Row](prefix, "warrantydescription", None, None)(x => extract(x).warrantydescription, (row, value) => merge(row, extract(row).copy(warrantydescription = value))) - override val noofyears = new OptField[/* max 256 chars */ String, Row](prefix, "noofyears", None, None)(x => extract(x).noofyears, (row, value) => merge(row, extract(row).copy(noofyears = value))) - override val maintenancedescription = new OptField[/* max 256 chars */ String, Row](prefix, "maintenancedescription", None, None)(x => extract(x).maintenancedescription, (row, value) => merge(row, extract(row).copy(maintenancedescription = value))) - override val wheel = new OptField[/* max 256 chars */ String, Row](prefix, "wheel", None, None)(x => extract(x).wheel, (row, value) => merge(row, extract(row).copy(wheel = value))) - override val saddle = new OptField[/* max 256 chars */ String, Row](prefix, "saddle", None, None)(x => extract(x).saddle, (row, value) => merge(row, extract(row).copy(saddle = value))) - override val pedal = new OptField[/* max 256 chars */ String, Row](prefix, "pedal", None, None)(x => extract(x).pedal, (row, value) => merge(row, extract(row).copy(pedal = value))) - override val bikeframe = new OptField[String, Row](prefix, "bikeframe", None, None)(x => extract(x).bikeframe, (row, value) => merge(row, extract(row).copy(bikeframe = value))) - override val crankset = new OptField[/* max 256 chars */ String, Row](prefix, "crankset", None, None)(x => extract(x).crankset, (row, value) => merge(row, extract(row).copy(crankset = value))) - override val pictureangle = new OptField[/* max 256 chars */ String, Row](prefix, "pictureangle", None, None)(x => extract(x).pictureangle, (row, value) => merge(row, extract(row).copy(pictureangle = value))) - override val picturesize = new OptField[/* max 256 chars */ String, Row](prefix, "picturesize", None, None)(x => extract(x).picturesize, (row, value) => merge(row, extract(row).copy(picturesize = value))) - override val productphotoid = new OptField[/* max 256 chars */ String, Row](prefix, "productphotoid", None, None)(x => extract(x).productphotoid, (row, value) => merge(row, extract(row).copy(productphotoid = value))) - override val material = new OptField[/* max 256 chars */ String, Row](prefix, "material", None, None)(x => extract(x).material, (row, value) => merge(row, extract(row).copy(material = value))) - override val color = new OptField[/* max 256 chars */ String, Row](prefix, "color", None, None)(x => extract(x).color, (row, value) => merge(row, extract(row).copy(color = value))) - override val productline = new OptField[/* max 256 chars */ String, Row](prefix, "productline", None, None)(x => extract(x).productline, (row, value) => merge(row, extract(row).copy(productline = value))) - override val style = new OptField[/* max 256 chars */ String, Row](prefix, "style", None, None)(x => extract(x).style, (row, value) => merge(row, extract(row).copy(style = value))) - override val riderexperience = new OptField[/* max 1024 chars */ String, Row](prefix, "riderexperience", None, None)(x => extract(x).riderexperience, (row, value) => merge(row, extract(row).copy(riderexperience = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, Summary, manufacturer, copyright, producturl, warrantyperiod, warrantydescription, noofyears, maintenancedescription, wheel, saddle, pedal, bikeframe, crankset, pictureangle, picturesize, productphotoid, material, color, productline, style, riderexperience, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelcatalogdescriptionViewRow, merge: (NewRow, VproductmodelcatalogdescriptionViewRow) => NewRow): VproductmodelcatalogdescriptionViewStructure[NewRow] = - new VproductmodelcatalogdescriptionViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala index 5355b83c42..0561081996 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.productmodel.ProductmodelId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VproductmodelinstructionsViewFields[Row] { val productmodelid: Field[ProductmodelId, Row] @@ -27,5 +29,33 @@ trait VproductmodelinstructionsViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VproductmodelinstructionsViewFields extends VproductmodelinstructionsViewStructure[VproductmodelinstructionsViewRow](None, identity, (_, x) => x) +object VproductmodelinstructionsViewFields { + val structure: Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, VproductmodelinstructionsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) + extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] { + + override val fields: VproductmodelinstructionsViewFields[Row] = new VproductmodelinstructionsViewFields[Row] { + override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) + override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) + override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) + override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) + override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) + override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) + override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productmodelid, fields.name, fields.instructions, fields.LocationID, fields.SetupHours, fields.MachineHours, fields.LaborHours, fields.LotSize, fields.Step, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala index 2b3ae05fd6..c6c21bad46 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VproductmodelinstructionsViewRepoImpl extends VproductmodelinstructionsViewRepo { override def select: SelectBuilder[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow] = { - SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow.jdbcDecoder) + SelectBuilderSql("production.vproductmodelinstructions", VproductmodelinstructionsViewFields.structure, VproductmodelinstructionsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VproductmodelinstructionsViewRow] = { sql"""select "productmodelid", "name", "instructions", "LocationID", "SetupHours", "MachineHours", "LaborHours", "LotSize", "Step", "rowguid", "modifieddate"::text from production.vproductmodelinstructions""".query(VproductmodelinstructionsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala deleted file mode 100644 index 8a44e88098..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/vproductmodelinstructions/VproductmodelinstructionsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package vproductmodelinstructions - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.productmodel.ProductmodelId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VproductmodelinstructionsViewStructure[Row](val prefix: Option[String], val extract: Row => VproductmodelinstructionsViewRow, val merge: (Row, VproductmodelinstructionsViewRow) => Row) - extends Relation[VproductmodelinstructionsViewFields, VproductmodelinstructionsViewRow, Row] - with VproductmodelinstructionsViewFields[Row] { outer => - - override val productmodelid = new Field[ProductmodelId, Row](prefix, "productmodelid", None, None)(x => extract(x).productmodelid, (row, value) => merge(row, extract(row).copy(productmodelid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val instructions = new OptField[String, Row](prefix, "instructions", None, None)(x => extract(x).instructions, (row, value) => merge(row, extract(row).copy(instructions = value))) - override val LocationID = new OptField[Int, Row](prefix, "LocationID", None, None)(x => extract(x).LocationID, (row, value) => merge(row, extract(row).copy(LocationID = value))) - override val SetupHours = new OptField[BigDecimal, Row](prefix, "SetupHours", None, None)(x => extract(x).SetupHours, (row, value) => merge(row, extract(row).copy(SetupHours = value))) - override val MachineHours = new OptField[BigDecimal, Row](prefix, "MachineHours", None, None)(x => extract(x).MachineHours, (row, value) => merge(row, extract(row).copy(MachineHours = value))) - override val LaborHours = new OptField[BigDecimal, Row](prefix, "LaborHours", None, None)(x => extract(x).LaborHours, (row, value) => merge(row, extract(row).copy(LaborHours = value))) - override val LotSize = new OptField[Int, Row](prefix, "LotSize", None, None)(x => extract(x).LotSize, (row, value) => merge(row, extract(row).copy(LotSize = value))) - override val Step = new OptField[/* max 1024 chars */ String, Row](prefix, "Step", None, None)(x => extract(x).Step, (row, value) => merge(row, extract(row).copy(Step = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productmodelid, name, instructions, LocationID, SetupHours, MachineHours, LaborHours, LotSize, Step, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VproductmodelinstructionsViewRow, merge: (NewRow, VproductmodelinstructionsViewRow) => NewRow): VproductmodelinstructionsViewStructure[NewRow] = - new VproductmodelinstructionsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala index add847ee57..d97de3b55d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.production.scrapreason.ScrapreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -26,5 +28,31 @@ trait WorkorderFields[Row] { val scrapreasonid: OptField[ScrapreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderFields extends WorkorderStructure[WorkorderRow](None, identity, (_, x) => x) +object WorkorderFields { + val structure: Relation[WorkorderFields, WorkorderRow, WorkorderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) + extends Relation[WorkorderFields, WorkorderRow, Row] { + + override val fields: WorkorderFields[Row] = new WorkorderFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.orderqty, fields.scrappedqty, fields.startdate, fields.enddate, fields.duedate, fields.scrapreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala index cb741183a9..2eba252e21 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoImpl.scala @@ -31,7 +31,7 @@ class WorkorderRepoImpl extends WorkorderRepo { sql"""delete from production.workorder where "workorderid" = ${Segment.paramSegment(workorderid)(WorkorderId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilder("production.workorder", WorkorderFields) + DeleteBuilder("production.workorder", WorkorderFields.structure) } override def insert(unsaved: WorkorderRow): ZIO[ZConnection, Throwable, WorkorderRow] = { sql"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") @@ -78,7 +78,7 @@ class WorkorderRepoImpl extends WorkorderRepo { streamingInsert(s"""COPY production.workorder("productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "workorderid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(WorkorderRowUnsaved.text) } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderSql("production.workorder", WorkorderFields, WorkorderRow.jdbcDecoder) + SelectBuilderSql("production.workorder", WorkorderFields.structure, WorkorderRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, WorkorderRow] = { sql"""select "workorderid", "productid", "orderqty", "scrappedqty", "startdate"::text, "enddate"::text, "duedate"::text, "scrapreasonid", "modifieddate"::text from production.workorder""".query(WorkorderRow.jdbcDecoder).selectStream @@ -103,7 +103,7 @@ class WorkorderRepoImpl extends WorkorderRepo { where "workorderid" = ${Segment.paramSegment(workorderid)(WorkorderId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilder("production.workorder", WorkorderFields, WorkorderRow.jdbcDecoder) + UpdateBuilder("production.workorder", WorkorderFields.structure, WorkorderRow.jdbcDecoder) } override def upsert(unsaved: WorkorderRow): ZIO[ZConnection, Throwable, UpdateResult[WorkorderRow]] = { sql"""insert into production.workorder("workorderid", "productid", "orderqty", "scrappedqty", "startdate", "enddate", "duedate", "scrapreasonid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala index 765e71b37a..4dccee40b7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderRepoMock.scala @@ -29,7 +29,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], ZIO.succeed(map.remove(workorderid).isDefined) } override def delete: DeleteBuilder[WorkorderFields, WorkorderRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderFields.structure.fields, map) } override def insert(unsaved: WorkorderRow): ZIO[ZConnection, Throwable, WorkorderRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[WorkorderFields, WorkorderRow] = { - SelectBuilderMock(WorkorderFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(WorkorderFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, WorkorderRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class WorkorderRepoMock(toRow: Function1[WorkorderRowUnsaved, WorkorderRow], } } override def update: UpdateBuilder[WorkorderFields, WorkorderRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderFields.structure.fields, map) } override def upsert(unsaved: WorkorderRow): ZIO[ZConnection, Throwable, UpdateResult[WorkorderRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala deleted file mode 100644 index 0ec9c52e4c..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorder/WorkorderStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorder - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.production.scrapreason.ScrapreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderStructure[Row](val prefix: Option[String], val extract: Row => WorkorderRow, val merge: (Row, WorkorderRow) => Row) - extends Relation[WorkorderFields, WorkorderRow, Row] - with WorkorderFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val orderqty = new Field[Int, Row](prefix, "orderqty", None, Some("int4"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val scrappedqty = new Field[TypoShort, Row](prefix, "scrappedqty", None, Some("int2"))(x => extract(x).scrappedqty, (row, value) => merge(row, extract(row).copy(scrappedqty = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val scrapreasonid = new OptField[ScrapreasonId, Row](prefix, "scrapreasonid", None, Some("int2"))(x => extract(x).scrapreasonid, (row, value) => merge(row, extract(row).copy(scrapreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, orderqty, scrappedqty, startdate, enddate, duedate, scrapreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderRow, merge: (NewRow, WorkorderRow) => NewRow): WorkorderStructure[NewRow] = - new WorkorderStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala index 65f604d366..2f946e6814 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.location.LocationId import adventureworks.production.workorder.WorkorderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait WorkorderroutingFields[Row] { val workorderid: IdField[WorkorderId, Row] @@ -29,5 +31,34 @@ trait WorkorderroutingFields[Row] { val actualcost: OptField[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object WorkorderroutingFields extends WorkorderroutingStructure[WorkorderroutingRow](None, identity, (_, x) => x) +object WorkorderroutingFields { + val structure: Relation[WorkorderroutingFields, WorkorderroutingRow, WorkorderroutingRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) + extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] { + + override val fields: WorkorderroutingFields[Row] = new WorkorderroutingFields[Row] { + override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) + override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) + override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) + override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) + override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) + override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) + override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) + override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) + override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) + override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.workorderid, fields.productid, fields.operationsequence, fields.locationid, fields.scheduledstartdate, fields.scheduledenddate, fields.actualstartdate, fields.actualenddate, fields.actualresourcehrs, fields.plannedcost, fields.actualcost, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala index f01d3faf2f..55d682c15f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoImpl.scala @@ -31,7 +31,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { sql"""delete from production.workorderrouting where "workorderid" = ${Segment.paramSegment(compositeId.workorderid)(WorkorderId.setter)} AND "productid" = ${Segment.paramSegment(compositeId.productid)(Setter.intSetter)} AND "operationsequence" = ${Segment.paramSegment(compositeId.operationsequence)(TypoShort.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilder("production.workorderrouting", WorkorderroutingFields) + DeleteBuilder("production.workorderrouting", WorkorderroutingFields.structure) } override def insert(unsaved: WorkorderroutingRow): ZIO[ZConnection, Throwable, WorkorderroutingRow] = { sql"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") @@ -78,7 +78,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { streamingInsert(s"""COPY production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(WorkorderroutingRowUnsaved.text) } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderSql("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.jdbcDecoder) + SelectBuilderSql("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, WorkorderroutingRow] = { sql"""select "workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate"::text, "scheduledenddate"::text, "actualstartdate"::text, "actualenddate"::text, "actualresourcehrs", "plannedcost", "actualcost", "modifieddate"::text from production.workorderrouting""".query(WorkorderroutingRow.jdbcDecoder).selectStream @@ -101,7 +101,7 @@ class WorkorderroutingRepoImpl extends WorkorderroutingRepo { where "workorderid" = ${Segment.paramSegment(compositeId.workorderid)(WorkorderId.setter)} AND "productid" = ${Segment.paramSegment(compositeId.productid)(Setter.intSetter)} AND "operationsequence" = ${Segment.paramSegment(compositeId.operationsequence)(TypoShort.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilder("production.workorderrouting", WorkorderroutingFields, WorkorderroutingRow.jdbcDecoder) + UpdateBuilder("production.workorderrouting", WorkorderroutingFields.structure, WorkorderroutingRow.jdbcDecoder) } override def upsert(unsaved: WorkorderroutingRow): ZIO[ZConnection, Throwable, UpdateResult[WorkorderroutingRow]] = { sql"""insert into production.workorderrouting("workorderid", "productid", "operationsequence", "locationid", "scheduledstartdate", "scheduledenddate", "actualstartdate", "actualenddate", "actualresourcehrs", "plannedcost", "actualcost", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala index 5bdb807ac9..87163b08e4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingRepoMock.scala @@ -29,7 +29,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields, map) + DeleteBuilderMock(DeleteParams.empty, WorkorderroutingFields.structure.fields, map) } override def insert(unsaved: WorkorderroutingRow): ZIO[ZConnection, Throwable, WorkorderroutingRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - SelectBuilderMock(WorkorderroutingFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(WorkorderroutingFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, WorkorderroutingRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class WorkorderroutingRepoMock(toRow: Function1[WorkorderroutingRowUnsaved, Work } } override def update: UpdateBuilder[WorkorderroutingFields, WorkorderroutingRow] = { - UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields, map) + UpdateBuilderMock(UpdateParams.empty, WorkorderroutingFields.structure.fields, map) } override def upsert(unsaved: WorkorderroutingRow): ZIO[ZConnection, Throwable, UpdateResult[WorkorderroutingRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala deleted file mode 100644 index 7329ce8cd9..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/production/workorderrouting/WorkorderroutingStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package production -package workorderrouting - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.location.LocationId -import adventureworks.production.workorder.WorkorderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class WorkorderroutingStructure[Row](val prefix: Option[String], val extract: Row => WorkorderroutingRow, val merge: (Row, WorkorderroutingRow) => Row) - extends Relation[WorkorderroutingFields, WorkorderroutingRow, Row] - with WorkorderroutingFields[Row] { outer => - - override val workorderid = new IdField[WorkorderId, Row](prefix, "workorderid", None, Some("int4"))(x => extract(x).workorderid, (row, value) => merge(row, extract(row).copy(workorderid = value))) - override val productid = new IdField[Int, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val operationsequence = new IdField[TypoShort, Row](prefix, "operationsequence", None, Some("int2"))(x => extract(x).operationsequence, (row, value) => merge(row, extract(row).copy(operationsequence = value))) - override val locationid = new Field[LocationId, Row](prefix, "locationid", None, Some("int2"))(x => extract(x).locationid, (row, value) => merge(row, extract(row).copy(locationid = value))) - override val scheduledstartdate = new Field[TypoLocalDateTime, Row](prefix, "scheduledstartdate", Some("text"), Some("timestamp"))(x => extract(x).scheduledstartdate, (row, value) => merge(row, extract(row).copy(scheduledstartdate = value))) - override val scheduledenddate = new Field[TypoLocalDateTime, Row](prefix, "scheduledenddate", Some("text"), Some("timestamp"))(x => extract(x).scheduledenddate, (row, value) => merge(row, extract(row).copy(scheduledenddate = value))) - override val actualstartdate = new OptField[TypoLocalDateTime, Row](prefix, "actualstartdate", Some("text"), Some("timestamp"))(x => extract(x).actualstartdate, (row, value) => merge(row, extract(row).copy(actualstartdate = value))) - override val actualenddate = new OptField[TypoLocalDateTime, Row](prefix, "actualenddate", Some("text"), Some("timestamp"))(x => extract(x).actualenddate, (row, value) => merge(row, extract(row).copy(actualenddate = value))) - override val actualresourcehrs = new OptField[BigDecimal, Row](prefix, "actualresourcehrs", None, Some("numeric"))(x => extract(x).actualresourcehrs, (row, value) => merge(row, extract(row).copy(actualresourcehrs = value))) - override val plannedcost = new Field[BigDecimal, Row](prefix, "plannedcost", None, Some("numeric"))(x => extract(x).plannedcost, (row, value) => merge(row, extract(row).copy(plannedcost = value))) - override val actualcost = new OptField[BigDecimal, Row](prefix, "actualcost", None, Some("numeric"))(x => extract(x).actualcost, (row, value) => merge(row, extract(row).copy(actualcost = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](workorderid, productid, operationsequence, locationid, scheduledstartdate, scheduledenddate, actualstartdate, actualenddate, actualresourcehrs, plannedcost, actualcost, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => WorkorderroutingRow, merge: (NewRow, WorkorderroutingRow) => NewRow): WorkorderroutingStructure[NewRow] = - new WorkorderroutingStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala index 5ab9028beb..156b398b0a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PodViewFields[Row] { val id: Field[Int, Row] @@ -25,5 +27,32 @@ trait PodViewFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PodViewFields extends PodViewStructure[PodViewRow](None, identity, (_, x) => x) +object PodViewFields { + val structure: Relation[PodViewFields, PodViewRow, PodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) + extends Relation[PodViewFields, PodViewRow, Row] { + + override val fields: PodViewFields[Row] = new PodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala index dafb26f05f..73672b23a2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PodViewRepoImpl extends PodViewRepo { override def select: SelectBuilder[PodViewFields, PodViewRow] = { - SelectBuilderSql("pu.pod", PodViewFields, PodViewRow.jdbcDecoder) + SelectBuilderSql("pu.pod", PodViewFields.structure, PodViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PodViewRow] = { sql"""select "id", "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text from pu.pod""".query(PodViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala deleted file mode 100644 index 15d841aa3a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pod/PodViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PodViewStructure[Row](val prefix: Option[String], val extract: Row => PodViewRow, val merge: (Row, PodViewRow) => Row) - extends Relation[PodViewFields, PodViewRow, Row] - with PodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new Field[Int, Row](prefix, "purchaseorderdetailid", None, None)(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, None)(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, None)(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PodViewRow, merge: (NewRow, PodViewRow) => NewRow): PodViewStructure[NewRow] = - new PodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala index a2734562de..818241dfa7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PohViewFields[Row] { val id: Field[PurchaseorderheaderId, Row] @@ -30,5 +32,35 @@ trait PohViewFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PohViewFields extends PohViewStructure[PohViewRow](None, identity, (_, x) => x) +object PohViewFields { + val structure: Relation[PohViewFields, PohViewRow, PohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) + extends Relation[PohViewFields, PohViewRow, Row] { + + override val fields: PohViewFields[Row] = new PohViewFields[Row] { + override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala index 66889c209f..c9b8f0008e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PohViewRepoImpl extends PohViewRepo { override def select: SelectBuilder[PohViewFields, PohViewRow] = { - SelectBuilderSql("pu.poh", PohViewFields, PohViewRow.jdbcDecoder) + SelectBuilderSql("pu.poh", PohViewFields.structure, PohViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PohViewRow] = { sql"""select "id", "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text from pu.poh""".query(PohViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala deleted file mode 100644 index 8051ee9753..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/poh/PohViewStructure.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package poh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PohViewStructure[Row](val prefix: Option[String], val extract: Row => PohViewRow, val merge: (Row, PohViewRow) => Row) - extends Relation[PohViewFields, PohViewRow, Row] - with PohViewFields[Row] { outer => - - override val id = new Field[PurchaseorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val purchaseorderid = new Field[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, None)(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, None)(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, None)(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PohViewRow, merge: (NewRow, PohViewRow) => NewRow): PohViewStructure[NewRow] = - new PohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala index a84f485b9b..6c4e236e74 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PvViewFields[Row] { val id: Field[ProductId, Row] @@ -28,5 +30,34 @@ trait PvViewFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PvViewFields extends PvViewStructure[PvViewRow](None, identity, (_, x) => x) +object PvViewFields { + val structure: Relation[PvViewFields, PvViewRow, PvViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) + extends Relation[PvViewFields, PvViewRow, Row] { + + override val fields: PvViewFields[Row] = new PvViewFields[Row] { + override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala index 64ac37ae51..3929e095c0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PvViewRepoImpl extends PvViewRepo { override def select: SelectBuilder[PvViewFields, PvViewRow] = { - SelectBuilderSql("pu.pv", PvViewFields, PvViewRow.jdbcDecoder) + SelectBuilderSql("pu.pv", PvViewFields.structure, PvViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PvViewRow] = { sql"""select "id", "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text from pu.pv""".query(PvViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala deleted file mode 100644 index 5fbdabf88c..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/pv/PvViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package pv - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PvViewStructure[Row](val prefix: Option[String], val extract: Row => PvViewRow, val merge: (Row, PvViewRow) => Row) - extends Relation[PvViewFields, PvViewRow, Row] - with PvViewFields[Row] { outer => - - override val id = new Field[ProductId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, None)(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, None)(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, None)(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), None)(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, None)(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, None)(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, None)(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, None)(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PvViewRow, merge: (NewRow, PvViewRow) => NewRow): PvViewStructure[NewRow] = - new PvViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala index 50bdb92690..49a93d912c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SmViewFields[Row] { val id: Field[ShipmethodId, Row] @@ -22,5 +24,29 @@ trait SmViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SmViewFields extends SmViewStructure[SmViewRow](None, identity, (_, x) => x) +object SmViewFields { + val structure: Relation[SmViewFields, SmViewRow, SmViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) + extends Relation[SmViewFields, SmViewRow, Row] { + + override val fields: SmViewFields[Row] = new SmViewFields[Row] { + override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala index 933dcf2b90..b44ebfc88a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SmViewRepoImpl extends SmViewRepo { override def select: SelectBuilder[SmViewFields, SmViewRow] = { - SelectBuilderSql("pu.sm", SmViewFields, SmViewRow.jdbcDecoder) + SelectBuilderSql("pu.sm", SmViewFields.structure, SmViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SmViewRow] = { sql"""select "id", "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text from pu.sm""".query(SmViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala deleted file mode 100644 index 0af2eb84b3..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/sm/SmViewStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package sm - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SmViewStructure[Row](val prefix: Option[String], val extract: Row => SmViewRow, val merge: (Row, SmViewRow) => Row) - extends Relation[SmViewFields, SmViewRow, Row] - with SmViewFields[Row] { outer => - - override val id = new Field[ShipmethodId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, None)(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, None)(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SmViewRow, merge: (NewRow, SmViewRow) => NewRow): SmViewStructure[NewRow] = - new SmViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala index f871aa41b8..e3aea50fff 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -27,5 +29,31 @@ trait VViewFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VViewFields extends VViewStructure[VViewRow](None, identity, (_, x) => x) +object VViewFields { + val structure: Relation[VViewFields, VViewRow, VViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) + extends Relation[VViewFields, VViewRow, Row] { + + override val fields: VViewFields[Row] = new VViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala index 8a6e5b0a95..83e834360b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VViewRepoImpl extends VViewRepo { override def select: SelectBuilder[VViewFields, VViewRow] = { - SelectBuilderSql("pu.v", VViewFields, VViewRow.jdbcDecoder) + SelectBuilderSql("pu.v", VViewFields.structure, VViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VViewRow] = { sql"""select "id", "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text from pu.v""".query(VViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala deleted file mode 100644 index 5177f6ecf7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/pu/v/VViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package pu -package v - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VViewStructure[Row](val prefix: Option[String], val extract: Row => VViewRow, val merge: (Row, VViewRow) => Row) - extends Relation[VViewFields, VViewRow, Row] - with VViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, None)(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, None)(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, None)(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VViewRow, merge: (NewRow, VViewRow) => NewRow): VViewStructure[NewRow] = - new VViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala index 643c78dd65..1482e2a9c3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestFields.scala @@ -8,12 +8,34 @@ package public package identity_test import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait IdentityTestFields[Row] { val alwaysGenerated: Field[Int, Row] val defaultGenerated: Field[Int, Row] val name: IdField[IdentityTestId, Row] } -object IdentityTestFields extends IdentityTestStructure[IdentityTestRow](None, identity, (_, x) => x) +object IdentityTestFields { + val structure: Relation[IdentityTestFields, IdentityTestRow, IdentityTestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) + extends Relation[IdentityTestFields, IdentityTestRow, Row] { + + override val fields: IdentityTestFields[Row] = new IdentityTestFields[Row] { + override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) + override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) + override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.alwaysGenerated, fields.defaultGenerated, fields.name) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala index fa2b462103..fd0d55f4c5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoImpl.scala @@ -27,7 +27,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { sql"""delete from public.identity-test where "name" = ${Segment.paramSegment(name)(IdentityTestId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilder("public.identity-test", IdentityTestFields) + DeleteBuilder("public.identity-test", IdentityTestFields.structure) } override def insert(unsaved: IdentityTestRow): ZIO[ZConnection, Throwable, IdentityTestRow] = { sql"""insert into public.identity-test("always_generated", "default_generated", "name") @@ -64,7 +64,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { streamingInsert(s"""COPY public.identity-test("name", "default_generated") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(IdentityTestRowUnsaved.text) } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderSql("public.identity-test", IdentityTestFields, IdentityTestRow.jdbcDecoder) + SelectBuilderSql("public.identity-test", IdentityTestFields.structure, IdentityTestRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, IdentityTestRow] = { sql"""select "always_generated", "default_generated", "name" from public.identity-test""".query(IdentityTestRow.jdbcDecoder).selectStream @@ -83,7 +83,7 @@ class IdentityTestRepoImpl extends IdentityTestRepo { where "name" = ${Segment.paramSegment(name)(IdentityTestId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilder("public.identity-test", IdentityTestFields, IdentityTestRow.jdbcDecoder) + UpdateBuilder("public.identity-test", IdentityTestFields.structure, IdentityTestRow.jdbcDecoder) } override def upsert(unsaved: IdentityTestRow): ZIO[ZConnection, Throwable, UpdateResult[IdentityTestRow]] = { sql"""insert into public.identity-test("always_generated", "default_generated", "name") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala index 7cfd110b92..19aee1af35 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestRepoMock.scala @@ -29,7 +29,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest ZIO.succeed(map.remove(name).isDefined) } override def delete: DeleteBuilder[IdentityTestFields, IdentityTestRow] = { - DeleteBuilderMock(DeleteParams.empty, IdentityTestFields, map) + DeleteBuilderMock(DeleteParams.empty, IdentityTestFields.structure.fields, map) } override def insert(unsaved: IdentityTestRow): ZIO[ZConnection, Throwable, IdentityTestRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[IdentityTestFields, IdentityTestRow] = { - SelectBuilderMock(IdentityTestFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(IdentityTestFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, IdentityTestRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class IdentityTestRepoMock(toRow: Function1[IdentityTestRowUnsaved, IdentityTest } } override def update: UpdateBuilder[IdentityTestFields, IdentityTestRow] = { - UpdateBuilderMock(UpdateParams.empty, IdentityTestFields, map) + UpdateBuilderMock(UpdateParams.empty, IdentityTestFields.structure.fields, map) } override def upsert(unsaved: IdentityTestRow): ZIO[ZConnection, Throwable, UpdateResult[IdentityTestRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala deleted file mode 100644 index 60539f99aa..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/identity_test/IdentityTestStructure.scala +++ /dev/null @@ -1,28 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package identity_test - -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class IdentityTestStructure[Row](val prefix: Option[String], val extract: Row => IdentityTestRow, val merge: (Row, IdentityTestRow) => Row) - extends Relation[IdentityTestFields, IdentityTestRow, Row] - with IdentityTestFields[Row] { outer => - - override val alwaysGenerated = new Field[Int, Row](prefix, "always_generated", None, Some("int4"))(x => extract(x).alwaysGenerated, (row, value) => merge(row, extract(row).copy(alwaysGenerated = value))) - override val defaultGenerated = new Field[Int, Row](prefix, "default_generated", None, Some("int4"))(x => extract(x).defaultGenerated, (row, value) => merge(row, extract(row).copy(defaultGenerated = value))) - override val name = new IdField[IdentityTestId, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](alwaysGenerated, defaultGenerated, name) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => IdentityTestRow, merge: (NewRow, IdentityTestRow) => NewRow): IdentityTestStructure[NewRow] = - new IdentityTestStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala index 16e50c3232..cf013b86df 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestFields.scala @@ -34,6 +34,8 @@ import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PgtestFields[Row] { val bool: Field[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestFields[Row] { val varchares: Field[Array[String], Row] val xmles: Field[Array[TypoXml], Row] } -object PgtestFields extends PgtestStructure[PgtestRow](None, identity, (_, x) => x) +object PgtestFields { + val structure: Relation[PgtestFields, PgtestRow, PgtestRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) + extends Relation[PgtestFields, PgtestRow, Row] { + + override val fields: PgtestFields[Row] = new PgtestFields[Row] { + override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala index 560612418c..2a431aea2a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestRepoImpl.scala @@ -47,7 +47,7 @@ import zio.stream.ZStream class PgtestRepoImpl extends PgtestRepo { override def delete: DeleteBuilder[PgtestFields, PgtestRow] = { - DeleteBuilder("public.pgtest", PgtestFields) + DeleteBuilder("public.pgtest", PgtestFields.structure) } override def insert(unsaved: PgtestRow): ZIO[ZConnection, Throwable, PgtestRow] = { sql"""insert into public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -59,12 +59,12 @@ class PgtestRepoImpl extends PgtestRepo { streamingInsert(s"""COPY public.pgtest("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""", batchSize, unsaved)(PgtestRow.text) } override def select: SelectBuilder[PgtestFields, PgtestRow] = { - SelectBuilderSql("public.pgtest", PgtestFields, PgtestRow.jdbcDecoder) + SelectBuilderSql("public.pgtest", PgtestFields.structure, PgtestRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PgtestRow] = { sql"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" from public.pgtest""".query(PgtestRow.jdbcDecoder).selectStream } override def update: UpdateBuilder[PgtestFields, PgtestRow] = { - UpdateBuilder("public.pgtest", PgtestFields, PgtestRow.jdbcDecoder) + UpdateBuilder("public.pgtest", PgtestFields.structure, PgtestRow.jdbcDecoder) } } diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala deleted file mode 100644 index fc9276d7c9..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtest/PgtestStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtest - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PgtestStructure[Row](val prefix: Option[String], val extract: Row => PgtestRow, val merge: (Row, PgtestRow) => Row) - extends Relation[PgtestFields, PgtestRow, Row] - with PgtestFields[Row] { outer => - - override val bool = new Field[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new Field[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new Field[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new Field[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new Field[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new Field[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new Field[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new Field[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new Field[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new Field[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new Field[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new Field[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new Field[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new Field[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new Field[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new Field[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new Field[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new Field[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new Field[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new Field[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new Field[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new Field[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new Field[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new Field[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new Field[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new Field[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new Field[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new Field[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new Field[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new Field[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new Field[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new Field[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new Field[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new Field[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new Field[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new Field[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new Field[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new Field[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new Field[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new Field[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new Field[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new Field[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new Field[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new Field[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new Field[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new Field[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new Field[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new Field[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new Field[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new Field[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new Field[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new Field[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new Field[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new Field[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new Field[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new Field[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new Field[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new Field[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new Field[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new Field[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new Field[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new Field[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new Field[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new Field[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new Field[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new Field[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new Field[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new Field[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new Field[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestRow, merge: (NewRow, PgtestRow) => NewRow): PgtestStructure[NewRow] = - new PgtestStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala index 74ebafbc89..6549622d3f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullFields.scala @@ -33,7 +33,9 @@ import adventureworks.customtypes.TypoVector import adventureworks.customtypes.TypoXml import adventureworks.public.Mydomain import adventureworks.public.Myenum +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PgtestnullFields[Row] { val bool: OptField[Boolean, Row] @@ -106,5 +108,91 @@ trait PgtestnullFields[Row] { val varchares: OptField[Array[String], Row] val xmles: OptField[Array[TypoXml], Row] } -object PgtestnullFields extends PgtestnullStructure[PgtestnullRow](None, identity, (_, x) => x) +object PgtestnullFields { + val structure: Relation[PgtestnullFields, PgtestnullRow, PgtestnullRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) + extends Relation[PgtestnullFields, PgtestnullRow, Row] { + + override val fields: PgtestnullFields[Row] = new PgtestnullFields[Row] { + override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) + override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) + override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) + override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) + override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) + override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) + override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) + override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) + override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) + override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) + override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) + override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) + override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) + override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) + override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) + override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) + override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) + override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) + override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) + override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) + override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) + override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) + override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) + override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) + override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) + override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) + override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) + override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) + override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) + override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) + override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) + override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) + override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) + override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) + override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) + override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) + override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) + override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) + override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) + override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) + override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) + override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) + override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) + override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) + override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) + override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) + override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) + override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) + override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) + override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) + override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) + override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) + override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) + override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) + override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) + override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) + override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) + override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) + override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) + override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) + override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) + override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) + override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) + override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) + override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) + override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) + override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) + override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.bool, fields.box, fields.bpchar, fields.bytea, fields.char, fields.circle, fields.date, fields.float4, fields.float8, fields.hstore, fields.inet, fields.int2, fields.int2vector, fields.int4, fields.int8, fields.interval, fields.json, fields.jsonb, fields.line, fields.lseg, fields.money, fields.mydomain, fields.myenum, fields.name, fields.numeric, fields.path, fields.point, fields.polygon, fields.text, fields.time, fields.timestamp, fields.timestampz, fields.timez, fields.uuid, fields.varchar, fields.vector, fields.xml, fields.boxes, fields.bpchares, fields.chares, fields.circlees, fields.datees, fields.float4es, fields.float8es, fields.inetes, fields.int2es, fields.int2vectores, fields.int4es, fields.int8es, fields.intervales, fields.jsones, fields.jsonbes, fields.linees, fields.lseges, fields.moneyes, fields.myenumes, fields.namees, fields.numerices, fields.pathes, fields.pointes, fields.polygones, fields.textes, fields.timees, fields.timestampes, fields.timestampzes, fields.timezes, fields.uuides, fields.varchares, fields.xmles) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala index f9bf9e036a..3dea2b57de 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullRepoImpl.scala @@ -47,7 +47,7 @@ import zio.stream.ZStream class PgtestnullRepoImpl extends PgtestnullRepo { override def delete: DeleteBuilder[PgtestnullFields, PgtestnullRow] = { - DeleteBuilder("public.pgtestnull", PgtestnullFields) + DeleteBuilder("public.pgtestnull", PgtestnullFields.structure) } override def insert(unsaved: PgtestnullRow): ZIO[ZConnection, Throwable, PgtestnullRow] = { sql"""insert into public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") @@ -59,12 +59,12 @@ class PgtestnullRepoImpl extends PgtestnullRepo { streamingInsert(s"""COPY public.pgtestnull("bool", "box", "bpchar", "bytea", "char", "circle", "date", "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money", "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time", "timestamp", "timestampz", "timez", "uuid", "varchar", "vector", "xml", "boxes", "bpchares", "chares", "circlees", "datees", "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes", "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees", "timestampes", "timestampzes", "timezes", "uuides", "varchares", "xmles") FROM STDIN""", batchSize, unsaved)(PgtestnullRow.text) } override def select: SelectBuilder[PgtestnullFields, PgtestnullRow] = { - SelectBuilderSql("public.pgtestnull", PgtestnullFields, PgtestnullRow.jdbcDecoder) + SelectBuilderSql("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PgtestnullRow] = { sql"""select "bool", "box", "bpchar", "bytea", "char", "circle", "date"::text, "float4", "float8", "hstore", "inet", "int2", "int2vector", "int4", "int8", "interval", "json", "jsonb", "line", "lseg", "money"::numeric, "mydomain", "myenum", "name", "numeric", "path", "point", "polygon", "text", "time"::text, "timestamp"::text, "timestampz"::text, "timez"::text, "uuid", "varchar", "vector"::float4[], "xml", "boxes", "bpchares", "chares", "circlees", "datees"::text[], "float4es", "float8es", "inetes", "int2es", "int2vectores", "int4es", "int8es", "intervales", "jsones", "jsonbes", "linees", "lseges", "moneyes"::numeric[], "myenumes", "namees", "numerices", "pathes", "pointes", "polygones", "textes", "timees"::text[], "timestampes"::text[], "timestampzes"::text[], "timezes"::text[], "uuides", "varchares", "xmles" from public.pgtestnull""".query(PgtestnullRow.jdbcDecoder).selectStream } override def update: UpdateBuilder[PgtestnullFields, PgtestnullRow] = { - UpdateBuilder("public.pgtestnull", PgtestnullFields, PgtestnullRow.jdbcDecoder) + UpdateBuilder("public.pgtestnull", PgtestnullFields.structure, PgtestnullRow.jdbcDecoder) } } diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala deleted file mode 100644 index a5e6a04b14..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/pgtestnull/PgtestnullStructure.scala +++ /dev/null @@ -1,119 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package pgtestnull - -import adventureworks.customtypes.TypoBox -import adventureworks.customtypes.TypoBytea -import adventureworks.customtypes.TypoCircle -import adventureworks.customtypes.TypoHStore -import adventureworks.customtypes.TypoInet -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoInt2Vector -import adventureworks.customtypes.TypoInterval -import adventureworks.customtypes.TypoJson -import adventureworks.customtypes.TypoJsonb -import adventureworks.customtypes.TypoLine -import adventureworks.customtypes.TypoLineSegment -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoLocalTime -import adventureworks.customtypes.TypoMoney -import adventureworks.customtypes.TypoOffsetTime -import adventureworks.customtypes.TypoPath -import adventureworks.customtypes.TypoPoint -import adventureworks.customtypes.TypoPolygon -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoVector -import adventureworks.customtypes.TypoXml -import adventureworks.public.Mydomain -import adventureworks.public.Myenum -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PgtestnullStructure[Row](val prefix: Option[String], val extract: Row => PgtestnullRow, val merge: (Row, PgtestnullRow) => Row) - extends Relation[PgtestnullFields, PgtestnullRow, Row] - with PgtestnullFields[Row] { outer => - - override val bool = new OptField[Boolean, Row](prefix, "bool", None, None)(x => extract(x).bool, (row, value) => merge(row, extract(row).copy(bool = value))) - override val box = new OptField[TypoBox, Row](prefix, "box", None, Some("box"))(x => extract(x).box, (row, value) => merge(row, extract(row).copy(box = value))) - override val bpchar = new OptField[/* bpchar, max 3 chars */ String, Row](prefix, "bpchar", None, Some("bpchar"))(x => extract(x).bpchar, (row, value) => merge(row, extract(row).copy(bpchar = value))) - override val bytea = new OptField[TypoBytea, Row](prefix, "bytea", None, Some("bytea"))(x => extract(x).bytea, (row, value) => merge(row, extract(row).copy(bytea = value))) - override val char = new OptField[/* bpchar, max 1 chars */ String, Row](prefix, "char", None, Some("bpchar"))(x => extract(x).char, (row, value) => merge(row, extract(row).copy(char = value))) - override val circle = new OptField[TypoCircle, Row](prefix, "circle", None, Some("circle"))(x => extract(x).circle, (row, value) => merge(row, extract(row).copy(circle = value))) - override val date = new OptField[TypoLocalDate, Row](prefix, "date", Some("text"), Some("date"))(x => extract(x).date, (row, value) => merge(row, extract(row).copy(date = value))) - override val float4 = new OptField[Float, Row](prefix, "float4", None, Some("float4"))(x => extract(x).float4, (row, value) => merge(row, extract(row).copy(float4 = value))) - override val float8 = new OptField[Double, Row](prefix, "float8", None, Some("float8"))(x => extract(x).float8, (row, value) => merge(row, extract(row).copy(float8 = value))) - override val hstore = new OptField[TypoHStore, Row](prefix, "hstore", None, Some("hstore"))(x => extract(x).hstore, (row, value) => merge(row, extract(row).copy(hstore = value))) - override val inet = new OptField[TypoInet, Row](prefix, "inet", None, Some("inet"))(x => extract(x).inet, (row, value) => merge(row, extract(row).copy(inet = value))) - override val int2 = new OptField[TypoShort, Row](prefix, "int2", None, Some("int2"))(x => extract(x).int2, (row, value) => merge(row, extract(row).copy(int2 = value))) - override val int2vector = new OptField[TypoInt2Vector, Row](prefix, "int2vector", None, Some("int2vector"))(x => extract(x).int2vector, (row, value) => merge(row, extract(row).copy(int2vector = value))) - override val int4 = new OptField[Int, Row](prefix, "int4", None, Some("int4"))(x => extract(x).int4, (row, value) => merge(row, extract(row).copy(int4 = value))) - override val int8 = new OptField[Long, Row](prefix, "int8", None, Some("int8"))(x => extract(x).int8, (row, value) => merge(row, extract(row).copy(int8 = value))) - override val interval = new OptField[TypoInterval, Row](prefix, "interval", None, Some("interval"))(x => extract(x).interval, (row, value) => merge(row, extract(row).copy(interval = value))) - override val json = new OptField[TypoJson, Row](prefix, "json", None, Some("json"))(x => extract(x).json, (row, value) => merge(row, extract(row).copy(json = value))) - override val jsonb = new OptField[TypoJsonb, Row](prefix, "jsonb", None, Some("jsonb"))(x => extract(x).jsonb, (row, value) => merge(row, extract(row).copy(jsonb = value))) - override val line = new OptField[TypoLine, Row](prefix, "line", None, Some("line"))(x => extract(x).line, (row, value) => merge(row, extract(row).copy(line = value))) - override val lseg = new OptField[TypoLineSegment, Row](prefix, "lseg", None, Some("lseg"))(x => extract(x).lseg, (row, value) => merge(row, extract(row).copy(lseg = value))) - override val money = new OptField[TypoMoney, Row](prefix, "money", Some("numeric"), Some("money"))(x => extract(x).money, (row, value) => merge(row, extract(row).copy(money = value))) - override val mydomain = new OptField[Mydomain, Row](prefix, "mydomain", None, Some("text"))(x => extract(x).mydomain, (row, value) => merge(row, extract(row).copy(mydomain = value))) - override val myenum = new OptField[Myenum, Row](prefix, "myenum", None, Some("public.myenum"))(x => extract(x).myenum, (row, value) => merge(row, extract(row).copy(myenum = value))) - override val name = new OptField[String, Row](prefix, "name", None, Some("name"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val numeric = new OptField[BigDecimal, Row](prefix, "numeric", None, Some("numeric"))(x => extract(x).numeric, (row, value) => merge(row, extract(row).copy(numeric = value))) - override val path = new OptField[TypoPath, Row](prefix, "path", None, Some("path"))(x => extract(x).path, (row, value) => merge(row, extract(row).copy(path = value))) - override val point = new OptField[TypoPoint, Row](prefix, "point", None, Some("point"))(x => extract(x).point, (row, value) => merge(row, extract(row).copy(point = value))) - override val polygon = new OptField[TypoPolygon, Row](prefix, "polygon", None, Some("polygon"))(x => extract(x).polygon, (row, value) => merge(row, extract(row).copy(polygon = value))) - override val text = new OptField[String, Row](prefix, "text", None, None)(x => extract(x).text, (row, value) => merge(row, extract(row).copy(text = value))) - override val time = new OptField[TypoLocalTime, Row](prefix, "time", Some("text"), Some("time"))(x => extract(x).time, (row, value) => merge(row, extract(row).copy(time = value))) - override val timestamp = new OptField[TypoLocalDateTime, Row](prefix, "timestamp", Some("text"), Some("timestamp"))(x => extract(x).timestamp, (row, value) => merge(row, extract(row).copy(timestamp = value))) - override val timestampz = new OptField[TypoInstant, Row](prefix, "timestampz", Some("text"), Some("timestamptz"))(x => extract(x).timestampz, (row, value) => merge(row, extract(row).copy(timestampz = value))) - override val timez = new OptField[TypoOffsetTime, Row](prefix, "timez", Some("text"), Some("timetz"))(x => extract(x).timez, (row, value) => merge(row, extract(row).copy(timez = value))) - override val uuid = new OptField[TypoUUID, Row](prefix, "uuid", None, Some("uuid"))(x => extract(x).uuid, (row, value) => merge(row, extract(row).copy(uuid = value))) - override val varchar = new OptField[String, Row](prefix, "varchar", None, None)(x => extract(x).varchar, (row, value) => merge(row, extract(row).copy(varchar = value))) - override val vector = new OptField[TypoVector, Row](prefix, "vector", Some("float4[]"), Some("vector"))(x => extract(x).vector, (row, value) => merge(row, extract(row).copy(vector = value))) - override val xml = new OptField[TypoXml, Row](prefix, "xml", None, Some("xml"))(x => extract(x).xml, (row, value) => merge(row, extract(row).copy(xml = value))) - override val boxes = new OptField[Array[TypoBox], Row](prefix, "boxes", None, Some("_box"))(x => extract(x).boxes, (row, value) => merge(row, extract(row).copy(boxes = value))) - override val bpchares = new OptField[Array[/* bpchar */ String], Row](prefix, "bpchares", None, Some("_bpchar"))(x => extract(x).bpchares, (row, value) => merge(row, extract(row).copy(bpchares = value))) - override val chares = new OptField[Array[/* bpchar */ String], Row](prefix, "chares", None, Some("_bpchar"))(x => extract(x).chares, (row, value) => merge(row, extract(row).copy(chares = value))) - override val circlees = new OptField[Array[TypoCircle], Row](prefix, "circlees", None, Some("_circle"))(x => extract(x).circlees, (row, value) => merge(row, extract(row).copy(circlees = value))) - override val datees = new OptField[Array[TypoLocalDate], Row](prefix, "datees", Some("text[]"), Some("_date"))(x => extract(x).datees, (row, value) => merge(row, extract(row).copy(datees = value))) - override val float4es = new OptField[Array[Float], Row](prefix, "float4es", None, Some("_float4"))(x => extract(x).float4es, (row, value) => merge(row, extract(row).copy(float4es = value))) - override val float8es = new OptField[Array[Double], Row](prefix, "float8es", None, Some("_float8"))(x => extract(x).float8es, (row, value) => merge(row, extract(row).copy(float8es = value))) - override val inetes = new OptField[Array[TypoInet], Row](prefix, "inetes", None, Some("_inet"))(x => extract(x).inetes, (row, value) => merge(row, extract(row).copy(inetes = value))) - override val int2es = new OptField[Array[TypoShort], Row](prefix, "int2es", None, Some("_int2"))(x => extract(x).int2es, (row, value) => merge(row, extract(row).copy(int2es = value))) - override val int2vectores = new OptField[Array[TypoInt2Vector], Row](prefix, "int2vectores", None, Some("_int2vector"))(x => extract(x).int2vectores, (row, value) => merge(row, extract(row).copy(int2vectores = value))) - override val int4es = new OptField[Array[Int], Row](prefix, "int4es", None, Some("_int4"))(x => extract(x).int4es, (row, value) => merge(row, extract(row).copy(int4es = value))) - override val int8es = new OptField[Array[Long], Row](prefix, "int8es", None, Some("_int8"))(x => extract(x).int8es, (row, value) => merge(row, extract(row).copy(int8es = value))) - override val intervales = new OptField[Array[TypoInterval], Row](prefix, "intervales", None, Some("_interval"))(x => extract(x).intervales, (row, value) => merge(row, extract(row).copy(intervales = value))) - override val jsones = new OptField[Array[TypoJson], Row](prefix, "jsones", None, Some("_json"))(x => extract(x).jsones, (row, value) => merge(row, extract(row).copy(jsones = value))) - override val jsonbes = new OptField[Array[TypoJsonb], Row](prefix, "jsonbes", None, Some("_jsonb"))(x => extract(x).jsonbes, (row, value) => merge(row, extract(row).copy(jsonbes = value))) - override val linees = new OptField[Array[TypoLine], Row](prefix, "linees", None, Some("_line"))(x => extract(x).linees, (row, value) => merge(row, extract(row).copy(linees = value))) - override val lseges = new OptField[Array[TypoLineSegment], Row](prefix, "lseges", None, Some("_lseg"))(x => extract(x).lseges, (row, value) => merge(row, extract(row).copy(lseges = value))) - override val moneyes = new OptField[Array[TypoMoney], Row](prefix, "moneyes", Some("numeric[]"), Some("_money"))(x => extract(x).moneyes, (row, value) => merge(row, extract(row).copy(moneyes = value))) - override val myenumes = new OptField[Array[Myenum], Row](prefix, "myenumes", None, Some("_myenum"))(x => extract(x).myenumes, (row, value) => merge(row, extract(row).copy(myenumes = value))) - override val namees = new OptField[Array[String], Row](prefix, "namees", None, Some("_name"))(x => extract(x).namees, (row, value) => merge(row, extract(row).copy(namees = value))) - override val numerices = new OptField[Array[BigDecimal], Row](prefix, "numerices", None, Some("_numeric"))(x => extract(x).numerices, (row, value) => merge(row, extract(row).copy(numerices = value))) - override val pathes = new OptField[Array[TypoPath], Row](prefix, "pathes", None, Some("_path"))(x => extract(x).pathes, (row, value) => merge(row, extract(row).copy(pathes = value))) - override val pointes = new OptField[Array[TypoPoint], Row](prefix, "pointes", None, Some("_point"))(x => extract(x).pointes, (row, value) => merge(row, extract(row).copy(pointes = value))) - override val polygones = new OptField[Array[TypoPolygon], Row](prefix, "polygones", None, Some("_polygon"))(x => extract(x).polygones, (row, value) => merge(row, extract(row).copy(polygones = value))) - override val textes = new OptField[Array[String], Row](prefix, "textes", None, Some("_text"))(x => extract(x).textes, (row, value) => merge(row, extract(row).copy(textes = value))) - override val timees = new OptField[Array[TypoLocalTime], Row](prefix, "timees", Some("text[]"), Some("_time"))(x => extract(x).timees, (row, value) => merge(row, extract(row).copy(timees = value))) - override val timestampes = new OptField[Array[TypoLocalDateTime], Row](prefix, "timestampes", Some("text[]"), Some("_timestamp"))(x => extract(x).timestampes, (row, value) => merge(row, extract(row).copy(timestampes = value))) - override val timestampzes = new OptField[Array[TypoInstant], Row](prefix, "timestampzes", Some("text[]"), Some("_timestamptz"))(x => extract(x).timestampzes, (row, value) => merge(row, extract(row).copy(timestampzes = value))) - override val timezes = new OptField[Array[TypoOffsetTime], Row](prefix, "timezes", Some("text[]"), Some("_timetz"))(x => extract(x).timezes, (row, value) => merge(row, extract(row).copy(timezes = value))) - override val uuides = new OptField[Array[TypoUUID], Row](prefix, "uuides", None, Some("_uuid"))(x => extract(x).uuides, (row, value) => merge(row, extract(row).copy(uuides = value))) - override val varchares = new OptField[Array[String], Row](prefix, "varchares", None, Some("_varchar"))(x => extract(x).varchares, (row, value) => merge(row, extract(row).copy(varchares = value))) - override val xmles = new OptField[Array[TypoXml], Row](prefix, "xmles", None, Some("_xml"))(x => extract(x).xmles, (row, value) => merge(row, extract(row).copy(xmles = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](bool, box, bpchar, bytea, char, circle, date, float4, float8, hstore, inet, int2, int2vector, int4, int8, interval, json, jsonb, line, lseg, money, mydomain, myenum, name, numeric, path, point, polygon, text, time, timestamp, timestampz, timez, uuid, varchar, vector, xml, boxes, bpchares, chares, circlees, datees, float4es, float8es, inetes, int2es, int2vectores, int4es, int8es, intervales, jsones, jsonbes, linees, lseges, moneyes, myenumes, namees, numerices, pathes, pointes, polygones, textes, timees, timestampes, timestampzes, timezes, uuides, varchares, xmles) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PgtestnullRow, merge: (NewRow, PgtestnullRow) => NewRow): PgtestnullStructure[NewRow] = - new PgtestnullStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersFields.scala index 13061aa062..ad568b3fab 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersFields.scala @@ -10,8 +10,10 @@ package users import adventureworks.customtypes.TypoInstant import adventureworks.customtypes.TypoUnknownCitext import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait UsersFields[Row] { val userId: IdField[UsersId, Row] @@ -22,5 +24,29 @@ trait UsersFields[Row] { val createdAt: Field[TypoInstant, Row] val verifiedOn: OptField[TypoInstant, Row] } -object UsersFields extends UsersStructure[UsersRow](None, identity, (_, x) => x) +object UsersFields { + val structure: Relation[UsersFields, UsersRow, UsersRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) + extends Relation[UsersFields, UsersRow, Row] { + + override val fields: UsersFields[Row] = new UsersFields[Row] { + override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) + override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) + override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) + override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) + override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) + override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.userId, fields.name, fields.lastName, fields.email, fields.password, fields.createdAt, fields.verifiedOn) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala index 8f13ba0cbe..24f04f0d34 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoImpl.scala @@ -29,7 +29,7 @@ class UsersRepoImpl extends UsersRepo { sql"""delete from public.users where "user_id" = ${Segment.paramSegment(userId)(UsersId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilder("public.users", UsersFields) + DeleteBuilder("public.users", UsersFields.structure) } override def insert(unsaved: UsersRow): ZIO[ZConnection, Throwable, UsersRow] = { sql"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") @@ -71,7 +71,7 @@ class UsersRepoImpl extends UsersRepo { streamingInsert(s"""COPY public.users("user_id", "name", "last_name", "email", "password", "verified_on", "created_at") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(UsersRowUnsaved.text) } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderSql("public.users", UsersFields, UsersRow.jdbcDecoder) + SelectBuilderSql("public.users", UsersFields.structure, UsersRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, UsersRow] = { sql"""select "user_id", "name", "last_name", "email"::text, "password", "created_at"::text, "verified_on"::text from public.users""".query(UsersRow.jdbcDecoder).selectStream @@ -100,7 +100,7 @@ class UsersRepoImpl extends UsersRepo { where "user_id" = ${Segment.paramSegment(userId)(UsersId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilder("public.users", UsersFields, UsersRow.jdbcDecoder) + UpdateBuilder("public.users", UsersFields.structure, UsersRow.jdbcDecoder) } override def upsert(unsaved: UsersRow): ZIO[ZConnection, Throwable, UpdateResult[UsersRow]] = { sql"""insert into public.users("user_id", "name", "last_name", "email", "password", "created_at", "verified_on") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala index b713be1381..222fb29020 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersRepoMock.scala @@ -30,7 +30,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], ZIO.succeed(map.remove(userId).isDefined) } override def delete: DeleteBuilder[UsersFields, UsersRow] = { - DeleteBuilderMock(DeleteParams.empty, UsersFields, map) + DeleteBuilderMock(DeleteParams.empty, UsersFields.structure.fields, map) } override def insert(unsaved: UsersRow): ZIO[ZConnection, Throwable, UsersRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[UsersFields, UsersRow] = { - SelectBuilderMock(UsersFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(UsersFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, UsersRow] = { ZStream.fromIterable(map.values) @@ -91,7 +91,7 @@ class UsersRepoMock(toRow: Function1[UsersRowUnsaved, UsersRow], } } override def update: UpdateBuilder[UsersFields, UsersRow] = { - UpdateBuilderMock(UpdateParams.empty, UsersFields, map) + UpdateBuilderMock(UpdateParams.empty, UsersFields.structure.fields, map) } override def upsert(unsaved: UsersRow): ZIO[ZConnection, Throwable, UpdateResult[UsersRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala deleted file mode 100644 index df2145cd74..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/public/users/UsersStructure.scala +++ /dev/null @@ -1,35 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package public -package users - -import adventureworks.customtypes.TypoInstant -import adventureworks.customtypes.TypoUnknownCitext -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class UsersStructure[Row](val prefix: Option[String], val extract: Row => UsersRow, val merge: (Row, UsersRow) => Row) - extends Relation[UsersFields, UsersRow, Row] - with UsersFields[Row] { outer => - - override val userId = new IdField[UsersId, Row](prefix, "user_id", None, Some("uuid"))(x => extract(x).userId, (row, value) => merge(row, extract(row).copy(userId = value))) - override val name = new Field[String, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val lastName = new OptField[String, Row](prefix, "last_name", None, None)(x => extract(x).lastName, (row, value) => merge(row, extract(row).copy(lastName = value))) - override val email = new Field[TypoUnknownCitext, Row](prefix, "email", Some("text"), Some("citext"))(x => extract(x).email, (row, value) => merge(row, extract(row).copy(email = value))) - override val password = new Field[String, Row](prefix, "password", None, None)(x => extract(x).password, (row, value) => merge(row, extract(row).copy(password = value))) - override val createdAt = new Field[TypoInstant, Row](prefix, "created_at", Some("text"), Some("timestamptz"))(x => extract(x).createdAt, (row, value) => merge(row, extract(row).copy(createdAt = value))) - override val verifiedOn = new OptField[TypoInstant, Row](prefix, "verified_on", Some("text"), Some("timestamptz"))(x => extract(x).verifiedOn, (row, value) => merge(row, extract(row).copy(verifiedOn = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](userId, name, lastName, email, password, createdAt, verifiedOn) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => UsersRow, merge: (NewRow, UsersRow) => NewRow): UsersStructure[NewRow] = - new UsersStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala index abc2ebb2ab..37dee82d95 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorFields.scala @@ -12,8 +12,10 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.production.product.ProductId import adventureworks.production.unitmeasure.UnitmeasureId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait ProductvendorFields[Row] { val productid: IdField[ProductId, Row] @@ -28,5 +30,33 @@ trait ProductvendorFields[Row] { val unitmeasurecode: Field[UnitmeasureId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ProductvendorFields extends ProductvendorStructure[ProductvendorRow](None, identity, (_, x) => x) +object ProductvendorFields { + val structure: Relation[ProductvendorFields, ProductvendorRow, ProductvendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) + extends Relation[ProductvendorFields, ProductvendorRow, Row] { + + override val fields: ProductvendorFields[Row] = new ProductvendorFields[Row] { + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) + override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) + override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) + override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) + override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) + override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) + override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) + override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.productid, fields.businessentityid, fields.averageleadtime, fields.standardprice, fields.lastreceiptcost, fields.lastreceiptdate, fields.minorderqty, fields.maxorderqty, fields.onorderqty, fields.unitmeasurecode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala index bb493cea24..bdc6d0d432 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoImpl.scala @@ -31,7 +31,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { sql"""delete from purchasing.productvendor where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilder("purchasing.productvendor", ProductvendorFields) + DeleteBuilder("purchasing.productvendor", ProductvendorFields.structure) } override def insert(unsaved: ProductvendorRow): ZIO[ZConnection, Throwable, ProductvendorRow] = { sql"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") @@ -77,7 +77,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { streamingInsert(s"""COPY purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ProductvendorRowUnsaved.text) } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderSql("purchasing.productvendor", ProductvendorFields, ProductvendorRow.jdbcDecoder) + SelectBuilderSql("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ProductvendorRow] = { sql"""select "productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate"::text, "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate"::text from purchasing.productvendor""".query(ProductvendorRow.jdbcDecoder).selectStream @@ -100,7 +100,7 @@ class ProductvendorRepoImpl extends ProductvendorRepo { where "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)} AND "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilder("purchasing.productvendor", ProductvendorFields, ProductvendorRow.jdbcDecoder) + UpdateBuilder("purchasing.productvendor", ProductvendorFields.structure, ProductvendorRow.jdbcDecoder) } override def upsert(unsaved: ProductvendorRow): ZIO[ZConnection, Throwable, UpdateResult[ProductvendorRow]] = { sql"""insert into purchasing.productvendor("productid", "businessentityid", "averageleadtime", "standardprice", "lastreceiptcost", "lastreceiptdate", "minorderqty", "maxorderqty", "onorderqty", "unitmeasurecode", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala index 62f1718b66..516d42e681 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorRepoMock.scala @@ -29,7 +29,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[ProductvendorFields, ProductvendorRow] = { - DeleteBuilderMock(DeleteParams.empty, ProductvendorFields, map) + DeleteBuilderMock(DeleteParams.empty, ProductvendorFields.structure.fields, map) } override def insert(unsaved: ProductvendorRow): ZIO[ZConnection, Throwable, ProductvendorRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ProductvendorFields, ProductvendorRow] = { - SelectBuilderMock(ProductvendorFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ProductvendorFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ProductvendorRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class ProductvendorRepoMock(toRow: Function1[ProductvendorRowUnsaved, Productven } } override def update: UpdateBuilder[ProductvendorFields, ProductvendorRow] = { - UpdateBuilderMock(UpdateParams.empty, ProductvendorFields, map) + UpdateBuilderMock(UpdateParams.empty, ProductvendorFields.structure.fields, map) } override def upsert(unsaved: ProductvendorRow): ZIO[ZConnection, Throwable, UpdateResult[ProductvendorRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala deleted file mode 100644 index 2499959af1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/productvendor/ProductvendorStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package productvendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.production.product.ProductId -import adventureworks.production.unitmeasure.UnitmeasureId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class ProductvendorStructure[Row](val prefix: Option[String], val extract: Row => ProductvendorRow, val merge: (Row, ProductvendorRow) => Row) - extends Relation[ProductvendorFields, ProductvendorRow, Row] - with ProductvendorFields[Row] { outer => - - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val averageleadtime = new Field[Int, Row](prefix, "averageleadtime", None, Some("int4"))(x => extract(x).averageleadtime, (row, value) => merge(row, extract(row).copy(averageleadtime = value))) - override val standardprice = new Field[BigDecimal, Row](prefix, "standardprice", None, Some("numeric"))(x => extract(x).standardprice, (row, value) => merge(row, extract(row).copy(standardprice = value))) - override val lastreceiptcost = new OptField[BigDecimal, Row](prefix, "lastreceiptcost", None, Some("numeric"))(x => extract(x).lastreceiptcost, (row, value) => merge(row, extract(row).copy(lastreceiptcost = value))) - override val lastreceiptdate = new OptField[TypoLocalDateTime, Row](prefix, "lastreceiptdate", Some("text"), Some("timestamp"))(x => extract(x).lastreceiptdate, (row, value) => merge(row, extract(row).copy(lastreceiptdate = value))) - override val minorderqty = new Field[Int, Row](prefix, "minorderqty", None, Some("int4"))(x => extract(x).minorderqty, (row, value) => merge(row, extract(row).copy(minorderqty = value))) - override val maxorderqty = new Field[Int, Row](prefix, "maxorderqty", None, Some("int4"))(x => extract(x).maxorderqty, (row, value) => merge(row, extract(row).copy(maxorderqty = value))) - override val onorderqty = new OptField[Int, Row](prefix, "onorderqty", None, Some("int4"))(x => extract(x).onorderqty, (row, value) => merge(row, extract(row).copy(onorderqty = value))) - override val unitmeasurecode = new Field[UnitmeasureId, Row](prefix, "unitmeasurecode", None, Some("bpchar"))(x => extract(x).unitmeasurecode, (row, value) => merge(row, extract(row).copy(unitmeasurecode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](productid, businessentityid, averageleadtime, standardprice, lastreceiptcost, lastreceiptdate, minorderqty, maxorderqty, onorderqty, unitmeasurecode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ProductvendorRow, merge: (NewRow, ProductvendorRow) => NewRow): ProductvendorStructure[NewRow] = - new ProductvendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala index b66e95a16d..75cca10754 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoShort import adventureworks.production.product.ProductId import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PurchaseorderdetailFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -25,5 +27,31 @@ trait PurchaseorderdetailFields[Row] { val rejectedqty: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderdetailFields extends PurchaseorderdetailStructure[PurchaseorderdetailRow](None, identity, (_, x) => x) +object PurchaseorderdetailFields { + val structure: Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, PurchaseorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) + extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] { + + override val fields: PurchaseorderdetailFields[Row] = new PurchaseorderdetailFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) + override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.purchaseorderdetailid, fields.duedate, fields.orderqty, fields.productid, fields.unitprice, fields.receivedqty, fields.rejectedqty, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala index 3951718882..bd531113d1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailRepoImpl.scala @@ -19,7 +19,7 @@ import zio.stream.ZStream class PurchaseorderdetailRepoImpl extends PurchaseorderdetailRepo { override def select: SelectBuilder[PurchaseorderdetailFields, PurchaseorderdetailRow] = { - SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields, PurchaseorderdetailRow.jdbcDecoder) + SelectBuilderSql("purchasing.purchaseorderdetail", PurchaseorderdetailFields.structure, PurchaseorderdetailRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PurchaseorderdetailRow] = { sql"""select "purchaseorderid", "purchaseorderdetailid", "duedate"::text, "orderqty", "productid", "unitprice", "receivedqty", "rejectedqty", "modifieddate"::text from purchasing.purchaseorderdetail""".query(PurchaseorderdetailRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala deleted file mode 100644 index 2d1db47893..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderdetail/PurchaseorderdetailStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.production.product.ProductId -import adventureworks.purchasing.purchaseorderheader.PurchaseorderheaderId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PurchaseorderdetailStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderdetailRow, val merge: (Row, PurchaseorderdetailRow) => Row) - extends Relation[PurchaseorderdetailFields, PurchaseorderdetailRow, Row] - with PurchaseorderdetailFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val purchaseorderdetailid = new IdField[Int, Row](prefix, "purchaseorderdetailid", None, Some("int4"))(x => extract(x).purchaseorderdetailid, (row, value) => merge(row, extract(row).copy(purchaseorderdetailid = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val receivedqty = new Field[BigDecimal, Row](prefix, "receivedqty", None, Some("numeric"))(x => extract(x).receivedqty, (row, value) => merge(row, extract(row).copy(receivedqty = value))) - override val rejectedqty = new Field[BigDecimal, Row](prefix, "rejectedqty", None, Some("numeric"))(x => extract(x).rejectedqty, (row, value) => merge(row, extract(row).copy(rejectedqty = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, purchaseorderdetailid, duedate, orderqty, productid, unitprice, receivedqty, rejectedqty, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderdetailRow, merge: (NewRow, PurchaseorderdetailRow) => NewRow): PurchaseorderdetailStructure[NewRow] = - new PurchaseorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala index 3289fd3a0c..a177fe4c26 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoShort import adventureworks.person.businessentity.BusinessentityId import adventureworks.purchasing.shipmethod.ShipmethodId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait PurchaseorderheaderFields[Row] { val purchaseorderid: IdField[PurchaseorderheaderId, Row] @@ -29,5 +31,34 @@ trait PurchaseorderheaderFields[Row] { val freight: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PurchaseorderheaderFields extends PurchaseorderheaderStructure[PurchaseorderheaderRow](None, identity, (_, x) => x) +object PurchaseorderheaderFields { + val structure: Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, PurchaseorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) + extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] { + + override val fields: PurchaseorderheaderFields[Row] = new PurchaseorderheaderFields[Row] { + override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) + override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.purchaseorderid, fields.revisionnumber, fields.status, fields.employeeid, fields.vendorid, fields.shipmethodid, fields.orderdate, fields.shipdate, fields.subtotal, fields.taxamt, fields.freight, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala index fe20ac4c4a..b93cd2c1d2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoImpl.scala @@ -31,7 +31,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { sql"""delete from purchasing.purchaseorderheader where "purchaseorderid" = ${Segment.paramSegment(purchaseorderid)(PurchaseorderheaderId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields) + DeleteBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure) } override def insert(unsaved: PurchaseorderheaderRow): ZIO[ZConnection, Throwable, PurchaseorderheaderRow] = { sql"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") @@ -99,7 +99,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { streamingInsert(s"""COPY purchasing.purchaseorderheader("employeeid", "vendorid", "shipmethodid", "shipdate", "purchaseorderid", "revisionnumber", "status", "orderdate", "subtotal", "taxamt", "freight", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PurchaseorderheaderRowUnsaved.text) } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.jdbcDecoder) + SelectBuilderSql("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PurchaseorderheaderRow] = { sql"""select "purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate"::text, "shipdate"::text, "subtotal", "taxamt", "freight", "modifieddate"::text from purchasing.purchaseorderheader""".query(PurchaseorderheaderRow.jdbcDecoder).selectStream @@ -127,7 +127,7 @@ class PurchaseorderheaderRepoImpl extends PurchaseorderheaderRepo { where "purchaseorderid" = ${Segment.paramSegment(purchaseorderid)(PurchaseorderheaderId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields, PurchaseorderheaderRow.jdbcDecoder) + UpdateBuilder("purchasing.purchaseorderheader", PurchaseorderheaderFields.structure, PurchaseorderheaderRow.jdbcDecoder) } override def upsert(unsaved: PurchaseorderheaderRow): ZIO[ZConnection, Throwable, UpdateResult[PurchaseorderheaderRow]] = { sql"""insert into purchasing.purchaseorderheader("purchaseorderid", "revisionnumber", "status", "employeeid", "vendorid", "shipmethodid", "orderdate", "shipdate", "subtotal", "taxamt", "freight", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala index b34d17a5d2..2150a87ffd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderRepoMock.scala @@ -29,7 +29,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved ZIO.succeed(map.remove(purchaseorderid).isDefined) } override def delete: DeleteBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def insert(unsaved: PurchaseorderheaderRow): ZIO[ZConnection, Throwable, PurchaseorderheaderRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - SelectBuilderMock(PurchaseorderheaderFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PurchaseorderheaderFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PurchaseorderheaderRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class PurchaseorderheaderRepoMock(toRow: Function1[PurchaseorderheaderRowUnsaved } } override def update: UpdateBuilder[PurchaseorderheaderFields, PurchaseorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, PurchaseorderheaderFields.structure.fields, map) } override def upsert(unsaved: PurchaseorderheaderRow): ZIO[ZConnection, Throwable, UpdateResult[PurchaseorderheaderRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala deleted file mode 100644 index e35523c02d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/purchaseorderheader/PurchaseorderheaderStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package purchaseorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.purchasing.shipmethod.ShipmethodId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class PurchaseorderheaderStructure[Row](val prefix: Option[String], val extract: Row => PurchaseorderheaderRow, val merge: (Row, PurchaseorderheaderRow) => Row) - extends Relation[PurchaseorderheaderFields, PurchaseorderheaderRow, Row] - with PurchaseorderheaderFields[Row] { outer => - - override val purchaseorderid = new IdField[PurchaseorderheaderId, Row](prefix, "purchaseorderid", None, Some("int4"))(x => extract(x).purchaseorderid, (row, value) => merge(row, extract(row).copy(purchaseorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val employeeid = new Field[BusinessentityId, Row](prefix, "employeeid", None, Some("int4"))(x => extract(x).employeeid, (row, value) => merge(row, extract(row).copy(employeeid = value))) - override val vendorid = new Field[BusinessentityId, Row](prefix, "vendorid", None, Some("int4"))(x => extract(x).vendorid, (row, value) => merge(row, extract(row).copy(vendorid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](purchaseorderid, revisionnumber, status, employeeid, vendorid, shipmethodid, orderdate, shipdate, subtotal, taxamt, freight, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PurchaseorderheaderRow, merge: (NewRow, PurchaseorderheaderRow) => NewRow): PurchaseorderheaderStructure[NewRow] = - new PurchaseorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala index 5d1d6be534..af04c0d732 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShipmethodFields[Row] { val shipmethodid: IdField[ShipmethodId, Row] @@ -21,5 +23,28 @@ trait ShipmethodFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShipmethodFields extends ShipmethodStructure[ShipmethodRow](None, identity, (_, x) => x) +object ShipmethodFields { + val structure: Relation[ShipmethodFields, ShipmethodRow, ShipmethodRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) + extends Relation[ShipmethodFields, ShipmethodRow, Row] { + + override val fields: ShipmethodFields[Row] = new ShipmethodFields[Row] { + override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) + override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shipmethodid, fields.name, fields.shipbase, fields.shiprate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala index 0cb251e948..1331f1a2f6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoImpl.scala @@ -30,7 +30,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { sql"""delete from purchasing.shipmethod where "shipmethodid" = ${Segment.paramSegment(shipmethodid)(ShipmethodId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilder("purchasing.shipmethod", ShipmethodFields) + DeleteBuilder("purchasing.shipmethod", ShipmethodFields.structure) } override def insert(unsaved: ShipmethodRow): ZIO[ZConnection, Throwable, ShipmethodRow] = { sql"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") @@ -83,7 +83,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { streamingInsert(s"""COPY purchasing.shipmethod("name", "shipmethodid", "shipbase", "shiprate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShipmethodRowUnsaved.text) } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderSql("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.jdbcDecoder) + SelectBuilderSql("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ShipmethodRow] = { sql"""select "shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate"::text from purchasing.shipmethod""".query(ShipmethodRow.jdbcDecoder).selectStream @@ -105,7 +105,7 @@ class ShipmethodRepoImpl extends ShipmethodRepo { where "shipmethodid" = ${Segment.paramSegment(shipmethodid)(ShipmethodId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilder("purchasing.shipmethod", ShipmethodFields, ShipmethodRow.jdbcDecoder) + UpdateBuilder("purchasing.shipmethod", ShipmethodFields.structure, ShipmethodRow.jdbcDecoder) } override def upsert(unsaved: ShipmethodRow): ZIO[ZConnection, Throwable, UpdateResult[ShipmethodRow]] = { sql"""insert into purchasing.shipmethod("shipmethodid", "name", "shipbase", "shiprate", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala index f8de65c12e..440cceaebd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodRepoMock.scala @@ -29,7 +29,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], ZIO.succeed(map.remove(shipmethodid).isDefined) } override def delete: DeleteBuilder[ShipmethodFields, ShipmethodRow] = { - DeleteBuilderMock(DeleteParams.empty, ShipmethodFields, map) + DeleteBuilderMock(DeleteParams.empty, ShipmethodFields.structure.fields, map) } override def insert(unsaved: ShipmethodRow): ZIO[ZConnection, Throwable, ShipmethodRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ShipmethodFields, ShipmethodRow] = { - SelectBuilderMock(ShipmethodFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ShipmethodFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ShipmethodRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ShipmethodRepoMock(toRow: Function1[ShipmethodRowUnsaved, ShipmethodRow], } } override def update: UpdateBuilder[ShipmethodFields, ShipmethodRow] = { - UpdateBuilderMock(UpdateParams.empty, ShipmethodFields, map) + UpdateBuilderMock(UpdateParams.empty, ShipmethodFields.structure.fields, map) } override def upsert(unsaved: ShipmethodRow): ZIO[ZConnection, Throwable, UpdateResult[ShipmethodRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala deleted file mode 100644 index 90cfaab1ca..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/shipmethod/ShipmethodStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package shipmethod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShipmethodStructure[Row](val prefix: Option[String], val extract: Row => ShipmethodRow, val merge: (Row, ShipmethodRow) => Row) - extends Relation[ShipmethodFields, ShipmethodRow, Row] - with ShipmethodFields[Row] { outer => - - override val shipmethodid = new IdField[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val shipbase = new Field[BigDecimal, Row](prefix, "shipbase", None, Some("numeric"))(x => extract(x).shipbase, (row, value) => merge(row, extract(row).copy(shipbase = value))) - override val shiprate = new Field[BigDecimal, Row](prefix, "shiprate", None, Some("numeric"))(x => extract(x).shiprate, (row, value) => merge(row, extract(row).copy(shiprate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shipmethodid, name, shipbase, shiprate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShipmethodRow, merge: (NewRow, ShipmethodRow) => NewRow): ShipmethodStructure[NewRow] = - new ShipmethodStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala index 4e5bed797b..cfa02cbff3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorFields.scala @@ -14,8 +14,10 @@ import adventureworks.public.AccountNumber import adventureworks.public.Flag import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VendorFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -27,5 +29,30 @@ trait VendorFields[Row] { val purchasingwebserviceurl: OptField[/* max 1024 chars */ String, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object VendorFields extends VendorStructure[VendorRow](None, identity, (_, x) => x) +object VendorFields { + val structure: Relation[VendorFields, VendorRow, VendorRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) + extends Relation[VendorFields, VendorRow, Row] { + + override val fields: VendorFields[Row] = new VendorFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) + override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) + override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) + override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.accountnumber, fields.name, fields.creditrating, fields.preferredvendorstatus, fields.activeflag, fields.purchasingwebserviceurl, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala index e99cc5739e..d7bda08e9d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoImpl.scala @@ -33,7 +33,7 @@ class VendorRepoImpl extends VendorRepo { sql"""delete from purchasing.vendor where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilder("purchasing.vendor", VendorFields) + DeleteBuilder("purchasing.vendor", VendorFields.structure) } override def insert(unsaved: VendorRow): ZIO[ZConnection, Throwable, VendorRow] = { sql"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") @@ -82,7 +82,7 @@ class VendorRepoImpl extends VendorRepo { streamingInsert(s"""COPY purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "purchasingwebserviceurl", "preferredvendorstatus", "activeflag", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(VendorRowUnsaved.text) } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderSql("purchasing.vendor", VendorFields, VendorRow.jdbcDecoder) + SelectBuilderSql("purchasing.vendor", VendorFields.structure, VendorRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VendorRow] = { sql"""select "businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate"::text from purchasing.vendor""".query(VendorRow.jdbcDecoder).selectStream @@ -106,7 +106,7 @@ class VendorRepoImpl extends VendorRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilder("purchasing.vendor", VendorFields, VendorRow.jdbcDecoder) + UpdateBuilder("purchasing.vendor", VendorFields.structure, VendorRow.jdbcDecoder) } override def upsert(unsaved: VendorRow): ZIO[ZConnection, Throwable, UpdateResult[VendorRow]] = { sql"""insert into purchasing.vendor("businessentityid", "accountnumber", "name", "creditrating", "preferredvendorstatus", "activeflag", "purchasingwebserviceurl", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala index f2afa632ae..c1425b7e60 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorRepoMock.scala @@ -30,7 +30,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[VendorFields, VendorRow] = { - DeleteBuilderMock(DeleteParams.empty, VendorFields, map) + DeleteBuilderMock(DeleteParams.empty, VendorFields.structure.fields, map) } override def insert(unsaved: VendorRow): ZIO[ZConnection, Throwable, VendorRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[VendorFields, VendorRow] = { - SelectBuilderMock(VendorFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(VendorFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, VendorRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class VendorRepoMock(toRow: Function1[VendorRowUnsaved, VendorRow], } } override def update: UpdateBuilder[VendorFields, VendorRow] = { - UpdateBuilderMock(UpdateParams.empty, VendorFields, map) + UpdateBuilderMock(UpdateParams.empty, VendorFields.structure.fields, map) } override def upsert(unsaved: VendorRow): ZIO[ZConnection, Throwable, UpdateResult[VendorRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala deleted file mode 100644 index dea19ffaa1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vendor/VendorStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vendor - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VendorStructure[Row](val prefix: Option[String], val extract: Row => VendorRow, val merge: (Row, VendorRow) => Row) - extends Relation[VendorFields, VendorRow, Row] - with VendorFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val accountnumber = new Field[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val creditrating = new Field[TypoShort, Row](prefix, "creditrating", None, Some("int2"))(x => extract(x).creditrating, (row, value) => merge(row, extract(row).copy(creditrating = value))) - override val preferredvendorstatus = new Field[Flag, Row](prefix, "preferredvendorstatus", None, Some("bool"))(x => extract(x).preferredvendorstatus, (row, value) => merge(row, extract(row).copy(preferredvendorstatus = value))) - override val activeflag = new Field[Flag, Row](prefix, "activeflag", None, Some("bool"))(x => extract(x).activeflag, (row, value) => merge(row, extract(row).copy(activeflag = value))) - override val purchasingwebserviceurl = new OptField[/* max 1024 chars */ String, Row](prefix, "purchasingwebserviceurl", None, None)(x => extract(x).purchasingwebserviceurl, (row, value) => merge(row, extract(row).copy(purchasingwebserviceurl = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, accountnumber, name, creditrating, preferredvendorstatus, activeflag, purchasingwebserviceurl, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VendorRow, merge: (NewRow, VendorRow) => NewRow): VendorStructure[NewRow] = - new VendorStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala index 9b5004aa23..d8035477dc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vvendorwithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VvendorwithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VvendorwithaddressesViewFields extends VvendorwithaddressesViewStructure[VvendorwithaddressesViewRow](None, identity, (_, x) => x) +object VvendorwithaddressesViewFields { + val structure: Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, VvendorwithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) + extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] { + + override val fields: VvendorwithaddressesViewFields[Row] = new VvendorwithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala index ad74ba1f92..0dba073bb3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VvendorwithaddressesViewRepoImpl extends VvendorwithaddressesViewRepo { override def select: SelectBuilder[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow] = { - SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields, VvendorwithaddressesViewRow.jdbcDecoder) + SelectBuilderSql("purchasing.vvendorwithaddresses", VvendorwithaddressesViewFields.structure, VvendorwithaddressesViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VvendorwithaddressesViewRow] = { sql"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" from purchasing.vvendorwithaddresses""".query(VvendorwithaddressesViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala deleted file mode 100644 index 01e59470ed..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithaddresses/VvendorwithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithaddressesViewRow, val merge: (Row, VvendorwithaddressesViewRow) => Row) - extends Relation[VvendorwithaddressesViewFields, VvendorwithaddressesViewRow, Row] - with VvendorwithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithaddressesViewRow, merge: (NewRow, VvendorwithaddressesViewRow) => NewRow): VvendorwithaddressesViewStructure[NewRow] = - new VvendorwithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala index 6208dfdd89..680b225e00 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VvendorwithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VvendorwithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VvendorwithcontactsViewFields extends VvendorwithcontactsViewStructure[VvendorwithcontactsViewRow](None, identity, (_, x) => x) +object VvendorwithcontactsViewFields { + val structure: Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, VvendorwithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) + extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] { + + override val fields: VvendorwithcontactsViewFields[Row] = new VvendorwithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala index 8f40d74234..59bc0bed65 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VvendorwithcontactsViewRepoImpl extends VvendorwithcontactsViewRepo { override def select: SelectBuilder[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow] = { - SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields, VvendorwithcontactsViewRow.jdbcDecoder) + SelectBuilderSql("purchasing.vvendorwithcontacts", VvendorwithcontactsViewFields.structure, VvendorwithcontactsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VvendorwithcontactsViewRow] = { sql"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" from purchasing.vvendorwithcontacts""".query(VvendorwithcontactsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala deleted file mode 100644 index d0e892230d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/purchasing/vvendorwithcontacts/VvendorwithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package purchasing -package vvendorwithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VvendorwithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VvendorwithcontactsViewRow, val merge: (Row, VvendorwithcontactsViewRow) => Row) - extends Relation[VvendorwithcontactsViewFields, VvendorwithcontactsViewRow, Row] - with VvendorwithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VvendorwithcontactsViewRow, merge: (NewRow, VvendorwithcontactsViewRow) => NewRow): VvendorwithcontactsViewStructure[NewRow] = - new VvendorwithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala index 9abdec14b2..868041fd0a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CViewFields[Row] { val id: Field[CustomerId, Row] @@ -24,5 +26,29 @@ trait CViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CViewFields extends CViewStructure[CViewRow](None, identity, (_, x) => x) +object CViewFields { + val structure: Relation[CViewFields, CViewRow, CViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) + extends Relation[CViewFields, CViewRow, Row] { + + override val fields: CViewFields[Row] = new CViewFields[Row] { + override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala index da6b4349c5..dd731cc519 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CViewRepoImpl extends CViewRepo { override def select: SelectBuilder[CViewFields, CViewRow] = { - SelectBuilderSql("sa.c", CViewFields, CViewRow.jdbcDecoder) + SelectBuilderSql("sa.c", CViewFields.structure, CViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CViewRow] = { sql"""select "id", "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text from sa.c""".query(CViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala deleted file mode 100644 index 973be24e13..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/c/CViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package c - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CViewStructure[Row](val prefix: Option[String], val extract: Row => CViewRow, val merge: (Row, CViewRow) => Row) - extends Relation[CViewFields, CViewRow, Row] - with CViewFields[Row] { outer => - - override val id = new Field[CustomerId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, None)(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, None)(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CViewRow, merge: (NewRow, CViewRow) => NewRow): CViewStructure[NewRow] = - new CViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala index 1ac3a32ec9..14a74e0e4d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CcViewFields[Row] { val id: Field[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,29 @@ trait CcViewFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CcViewFields extends CcViewStructure[CcViewRow](None, identity, (_, x) => x) +object CcViewFields { + val structure: Relation[CcViewFields, CcViewRow, CcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) + extends Relation[CcViewFields, CcViewRow, Row] { + + override val fields: CcViewFields[Row] = new CcViewFields[Row] { + override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala index 70705ee113..b604746daf 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CcViewRepoImpl extends CcViewRepo { override def select: SelectBuilder[CcViewFields, CcViewRow] = { - SelectBuilderSql("sa.cc", CcViewFields, CcViewRow.jdbcDecoder) + SelectBuilderSql("sa.cc", CcViewFields.structure, CcViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CcViewRow] = { sql"""select "id", "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text from sa.cc""".query(CcViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala deleted file mode 100644 index 247390ff7b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cc/CcViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CcViewStructure[Row](val prefix: Option[String], val extract: Row => CcViewRow, val merge: (Row, CcViewRow) => Row) - extends Relation[CcViewFields, CcViewRow, Row] - with CcViewFields[Row] { outer => - - override val id = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, None)(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, None)(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CcViewRow, merge: (NewRow, CcViewRow) => NewRow): CcViewStructure[NewRow] = - new CcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala index d4e16756d0..f54c580ed4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import adventureworks.sales.currencyrate.CurrencyrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrViewFields[Row] { val currencyrateid: Field[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CrViewFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrViewFields extends CrViewStructure[CrViewRow](None, identity, (_, x) => x) +object CrViewFields { + val structure: Relation[CrViewFields, CrViewRow, CrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) + extends Relation[CrViewFields, CrViewRow, Row] { + + override val fields: CrViewFields[Row] = new CrViewFields[Row] { + override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala index b40d042056..0e0b994d03 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CrViewRepoImpl extends CrViewRepo { override def select: SelectBuilder[CrViewFields, CrViewRow] = { - SelectBuilderSql("sa.cr", CrViewFields, CrViewRow.jdbcDecoder) + SelectBuilderSql("sa.cr", CrViewFields.structure, CrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CrViewRow] = { sql"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text from sa.cr""".query(CrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala deleted file mode 100644 index 0d386f89eb..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cr/CrViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import adventureworks.sales.currencyrate.CurrencyrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrViewStructure[Row](val prefix: Option[String], val extract: Row => CrViewRow, val merge: (Row, CrViewRow) => Row) - extends Relation[CrViewFields, CrViewRow, Row] - with CrViewFields[Row] { outer => - - override val currencyrateid = new Field[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), None)(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, None)(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, None)(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, None)(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, None)(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrViewRow, merge: (NewRow, CrViewRow) => NewRow): CrViewStructure[NewRow] = - new CrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala index 37d0698bdc..1575037e7f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CrcViewFields[Row] { val countryregioncode: Field[CountryregionId, Row] val currencycode: Field[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CrcViewFields extends CrcViewStructure[CrcViewRow](None, identity, (_, x) => x) +object CrcViewFields { + val structure: Relation[CrcViewFields, CrcViewRow, CrcViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) + extends Relation[CrcViewFields, CrcViewRow, Row] { + + override val fields: CrcViewFields[Row] = new CrcViewFields[Row] { + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala index a4a307f1a4..1be480226f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CrcViewRepoImpl extends CrcViewRepo { override def select: SelectBuilder[CrcViewFields, CrcViewRow] = { - SelectBuilderSql("sa.crc", CrcViewFields, CrcViewRow.jdbcDecoder) + SelectBuilderSql("sa.crc", CrcViewFields.structure, CrcViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CrcViewRow] = { sql"""select "countryregioncode", "currencycode", "modifieddate"::text from sa.crc""".query(CrcViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala deleted file mode 100644 index 5b718a802d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/crc/CrcViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package crc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CrcViewStructure[Row](val prefix: Option[String], val extract: Row => CrcViewRow, val merge: (Row, CrcViewRow) => Row) - extends Relation[CrcViewFields, CrcViewRow, Row] - with CrcViewFields[Row] { outer => - - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CrcViewRow, merge: (NewRow, CrcViewRow) => NewRow): CrcViewStructure[NewRow] = - new CrcViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala index 561a3cbd51..cb3d130142 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait CuViewFields[Row] { val id: Field[CurrencyId, Row] @@ -18,5 +20,26 @@ trait CuViewFields[Row] { val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CuViewFields extends CuViewStructure[CuViewRow](None, identity, (_, x) => x) +object CuViewFields { + val structure: Relation[CuViewFields, CuViewRow, CuViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) + extends Relation[CuViewFields, CuViewRow, Row] { + + override val fields: CuViewFields[Row] = new CuViewFields[Row] { + override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala index d363e9a18f..b147980647 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class CuViewRepoImpl extends CuViewRepo { override def select: SelectBuilder[CuViewFields, CuViewRow] = { - SelectBuilderSql("sa.cu", CuViewFields, CuViewRow.jdbcDecoder) + SelectBuilderSql("sa.cu", CuViewFields.structure, CuViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CuViewRow] = { sql"""select "id", "currencycode", "name", "modifieddate"::text from sa.cu""".query(CuViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala deleted file mode 100644 index 309775518a..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/cu/CuViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package cu - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class CuViewStructure[Row](val prefix: Option[String], val extract: Row => CuViewRow, val merge: (Row, CuViewRow) => Row) - extends Relation[CuViewFields, CuViewRow, Row] - with CuViewFields[Row] { outer => - - override val id = new Field[CurrencyId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val currencycode = new Field[CurrencyId, Row](prefix, "currencycode", None, None)(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CuViewRow, merge: (NewRow, CuViewRow) => NewRow): CuViewStructure[NewRow] = - new CuViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala index b6907470a9..7b5f37a711 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait PccViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -18,5 +20,26 @@ trait PccViewFields[Row] { val creditcardid: Field[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PccViewFields extends PccViewStructure[PccViewRow](None, identity, (_, x) => x) +object PccViewFields { + val structure: Relation[PccViewFields, PccViewRow, PccViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) + extends Relation[PccViewFields, PccViewRow, Row] { + + override val fields: PccViewFields[Row] = new PccViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala index 39ec5618d1..c028c82dec 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class PccViewRepoImpl extends PccViewRepo { override def select: SelectBuilder[PccViewFields, PccViewRow] = { - SelectBuilderSql("sa.pcc", PccViewFields, PccViewRow.jdbcDecoder) + SelectBuilderSql("sa.pcc", PccViewFields.structure, PccViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PccViewRow] = { sql"""select "id", "businessentityid", "creditcardid", "modifieddate"::text from sa.pcc""".query(PccViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala deleted file mode 100644 index 9332c2a157..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/pcc/PccViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package pcc - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class PccViewStructure[Row](val prefix: Option[String], val extract: Row => PccViewRow, val merge: (Row, PccViewRow) => Row) - extends Relation[PccViewFields, PccViewRow, Row] - with PccViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new Field[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PccViewRow, merge: (NewRow, PccViewRow) => NewRow): PccViewStructure[NewRow] = - new PccViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala index 3ed9b93bd2..5b134747ee 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -24,5 +26,29 @@ trait SViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SViewFields extends SViewStructure[SViewRow](None, identity, (_, x) => x) +object SViewFields { + val structure: Relation[SViewFields, SViewRow, SViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) + extends Relation[SViewFields, SViewRow, Row] { + + override val fields: SViewFields[Row] = new SViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala index c33f7ead3c..673b2c7fd0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SViewRepoImpl extends SViewRepo { override def select: SelectBuilder[SViewFields, SViewRow] = { - SelectBuilderSql("sa.s", SViewFields, SViewRow.jdbcDecoder) + SelectBuilderSql("sa.s", SViewFields.structure, SViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SViewRow] = { sql"""select "id", "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text from sa.s""".query(SViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala deleted file mode 100644 index 3a1ef7e533..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/s/SViewStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package s - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SViewStructure[Row](val prefix: Option[String], val extract: Row => SViewRow, val merge: (Row, SViewRow) => Row) - extends Relation[SViewFields, SViewRow, Row] - with SViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SViewRow, merge: (NewRow, SViewRow) => NewRow): SViewStructure[NewRow] = - new SViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala index 6dc86bbbd5..4da657ee9b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import adventureworks.sales.shoppingcartitem.ShoppingcartitemId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SciViewFields[Row] { val id: Field[ShoppingcartitemId, Row] @@ -21,5 +23,29 @@ trait SciViewFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SciViewFields extends SciViewStructure[SciViewRow](None, identity, (_, x) => x) +object SciViewFields { + val structure: Relation[SciViewFields, SciViewRow, SciViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) + extends Relation[SciViewFields, SciViewRow, Row] { + + override val fields: SciViewFields[Row] = new SciViewFields[Row] { + override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala index 364445e0d4..0a9db11e47 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SciViewRepoImpl extends SciViewRepo { override def select: SelectBuilder[SciViewFields, SciViewRow] = { - SelectBuilderSql("sa.sci", SciViewFields, SciViewRow.jdbcDecoder) + SelectBuilderSql("sa.sci", SciViewFields.structure, SciViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SciViewRow] = { sql"""select "id", "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text from sa.sci""".query(SciViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala deleted file mode 100644 index f253da1923..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sci/SciViewStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sci - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import adventureworks.sales.shoppingcartitem.ShoppingcartitemId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SciViewStructure[Row](val prefix: Option[String], val extract: Row => SciViewRow, val merge: (Row, SciViewRow) => Row) - extends Relation[SciViewFields, SciViewRow, Row] - with SciViewFields[Row] { outer => - - override val id = new Field[ShoppingcartitemId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val shoppingcartitemid = new Field[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, None)(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, None)(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), None)(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SciViewRow, merge: (NewRow, SciViewRow) => NewRow): SciViewStructure[NewRow] = - new SciViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala index 4c304c3efa..d6207238ad 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SoViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -27,5 +29,34 @@ trait SoViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SoViewFields extends SoViewStructure[SoViewRow](None, identity, (_, x) => x) +object SoViewFields { + val structure: Relation[SoViewFields, SoViewRow, SoViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) + extends Relation[SoViewFields, SoViewRow, Row] { + + override val fields: SoViewFields[Row] = new SoViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala index 356233713a..723297c814 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SoViewRepoImpl extends SoViewRepo { override def select: SelectBuilder[SoViewFields, SoViewRow] = { - SelectBuilderSql("sa.so", SoViewFields, SoViewRow.jdbcDecoder) + SelectBuilderSql("sa.so", SoViewFields.structure, SoViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SoViewRow] = { sql"""select "id", "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text from sa.so""".query(SoViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala deleted file mode 100644 index 520a7fbf2d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/so/SoViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package so - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SoViewStructure[Row](val prefix: Option[String], val extract: Row => SoViewRow, val merge: (Row, SoViewRow) => Row) - extends Relation[SoViewFields, SoViewRow, Row] - with SoViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, None)(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, None)(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, None)(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SoViewRow, merge: (NewRow, SoViewRow) => NewRow): SoViewStructure[NewRow] = - new SoViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala index cf7338e74f..02bd8b80ba 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewFields.scala @@ -14,7 +14,9 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SodViewFields[Row] { val id: Field[Int, Row] @@ -29,5 +31,33 @@ trait SodViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SodViewFields extends SodViewStructure[SodViewRow](None, identity, (_, x) => x) +object SodViewFields { + val structure: Relation[SodViewFields, SodViewRow, SodViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) + extends Relation[SodViewFields, SodViewRow, Row] { + + override val fields: SodViewFields[Row] = new SodViewFields[Row] { + override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala index 96f00e5137..ecc99745cd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SodViewRepoImpl extends SodViewRepo { override def select: SelectBuilder[SodViewFields, SodViewRow] = { - SelectBuilderSql("sa.sod", SodViewFields, SodViewRow.jdbcDecoder) + SelectBuilderSql("sa.sod", SodViewFields.structure, SodViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SodViewRow] = { sql"""select "id", "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text from sa.sod""".query(SodViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala deleted file mode 100644 index 8fbde8f240..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sod/SodViewStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sod - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SodViewStructure[Row](val prefix: Option[String], val extract: Row => SodViewRow, val merge: (Row, SodViewRow) => Row) - extends Relation[SodViewFields, SodViewRow, Row] - with SodViewFields[Row] { outer => - - override val id = new Field[Int, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new Field[Int, Row](prefix, "salesorderdetailid", None, None)(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, None)(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, None)(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, None)(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SodViewRow, merge: (NewRow, SodViewRow) => NewRow): SodViewStructure[NewRow] = - new SodViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala index 6c1c92f5dc..0352e3f4f0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewFields.scala @@ -22,7 +22,9 @@ import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SohViewFields[Row] { val id: Field[SalesorderheaderId, Row] @@ -52,5 +54,48 @@ trait SohViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohViewFields extends SohViewStructure[SohViewRow](None, identity, (_, x) => x) +object SohViewFields { + val structure: Relation[SohViewFields, SohViewRow, SohViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) + extends Relation[SohViewFields, SohViewRow, Row] { + + override val fields: SohViewFields[Row] = new SohViewFields[Row] { + override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala index c14bf968d2..6fe980f252 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SohViewRepoImpl extends SohViewRepo { override def select: SelectBuilder[SohViewFields, SohViewRow] = { - SelectBuilderSql("sa.soh", SohViewFields, SohViewRow.jdbcDecoder) + SelectBuilderSql("sa.soh", SohViewFields.structure, SohViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SohViewRow] = { sql"""select "id", "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text from sa.soh""".query(SohViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala deleted file mode 100644 index 3dbb6fb70e..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/soh/SohViewStructure.scala +++ /dev/null @@ -1,65 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package soh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SohViewStructure[Row](val prefix: Option[String], val extract: Row => SohViewRow, val merge: (Row, SohViewRow) => Row) - extends Relation[SohViewFields, SohViewRow, Row] - with SohViewFields[Row] { outer => - - override val id = new Field[SalesorderheaderId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, None)(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), None)(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), None)(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), None)(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, None)(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, None)(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, None)(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, None)(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, None)(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, None)(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, None)(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, None)(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, None)(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, None)(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, None)(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, None)(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, None)(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, None)(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohViewRow, merge: (NewRow, SohViewRow) => NewRow): SohViewStructure[NewRow] = - new SohViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala index dec06a94ba..e86f54b1a4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewFields.scala @@ -11,11 +11,33 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SohsrViewFields[Row] { val salesorderid: Field[SalesorderheaderId, Row] val salesreasonid: Field[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SohsrViewFields extends SohsrViewStructure[SohsrViewRow](None, identity, (_, x) => x) +object SohsrViewFields { + val structure: Relation[SohsrViewFields, SohsrViewRow, SohsrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) + extends Relation[SohsrViewFields, SohsrViewRow, Row] { + + override val fields: SohsrViewFields[Row] = new SohsrViewFields[Row] { + override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala index ad8aee0799..223fad698d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SohsrViewRepoImpl extends SohsrViewRepo { override def select: SelectBuilder[SohsrViewFields, SohsrViewRow] = { - SelectBuilderSql("sa.sohsr", SohsrViewFields, SohsrViewRow.jdbcDecoder) + SelectBuilderSql("sa.sohsr", SohsrViewFields.structure, SohsrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SohsrViewRow] = { sql"""select "salesorderid", "salesreasonid", "modifieddate"::text from sa.sohsr""".query(SohsrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala deleted file mode 100644 index 9fa9d7c4bf..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sohsr/SohsrViewStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sohsr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SohsrViewStructure[Row](val prefix: Option[String], val extract: Row => SohsrViewRow, val merge: (Row, SohsrViewRow) => Row) - extends Relation[SohsrViewFields, SohsrViewRow, Row] - with SohsrViewFields[Row] { outer => - - override val salesorderid = new Field[SalesorderheaderId, Row](prefix, "salesorderid", None, None)(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SohsrViewRow, merge: (NewRow, SohsrViewRow) => NewRow): SohsrViewStructure[NewRow] = - new SohsrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala index 5a3d272dc3..2085675349 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewFields.scala @@ -12,6 +12,8 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SopViewFields[Row] { val id: Field[SpecialofferId, Row] @@ -20,5 +22,27 @@ trait SopViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SopViewFields extends SopViewStructure[SopViewRow](None, identity, (_, x) => x) +object SopViewFields { + val structure: Relation[SopViewFields, SopViewRow, SopViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) + extends Relation[SopViewFields, SopViewRow, Row] { + + override val fields: SopViewFields[Row] = new SopViewFields[Row] { + override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala index d49eb72a85..553823abeb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SopViewRepoImpl extends SopViewRepo { override def select: SelectBuilder[SopViewFields, SopViewRow] = { - SelectBuilderSql("sa.sop", SopViewFields, SopViewRow.jdbcDecoder) + SelectBuilderSql("sa.sop", SopViewFields.structure, SopViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SopViewRow] = { sql"""select "id", "specialofferid", "productid", "rowguid", "modifieddate"::text from sa.sop""".query(SopViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala deleted file mode 100644 index c08095d790..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sop/SopViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sop - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SopViewStructure[Row](val prefix: Option[String], val extract: Row => SopViewRow, val merge: (Row, SopViewRow) => Row) - extends Relation[SopViewFields, SopViewRow, Row] - with SopViewFields[Row] { outer => - - override val id = new Field[SpecialofferId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, None)(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, None)(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SopViewRow, merge: (NewRow, SopViewRow) => NewRow): SopViewStructure[NewRow] = - new SopViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala index e7971f3a5c..5d1e67a5e3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -26,5 +28,32 @@ trait SpViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpViewFields extends SpViewStructure[SpViewRow](None, identity, (_, x) => x) +object SpViewFields { + val structure: Relation[SpViewFields, SpViewRow, SpViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) + extends Relation[SpViewFields, SpViewRow, Row] { + + override val fields: SpViewFields[Row] = new SpViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala index 711c98efa7..66a3237eb0 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SpViewRepoImpl extends SpViewRepo { override def select: SelectBuilder[SpViewFields, SpViewRow] = { - SelectBuilderSql("sa.sp", SpViewFields, SpViewRow.jdbcDecoder) + SelectBuilderSql("sa.sp", SpViewFields.structure, SpViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SpViewRow] = { sql"""select "id", "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text from sa.sp""".query(SpViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala deleted file mode 100644 index 0c0b5a2eaa..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sp/SpViewStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sp - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpViewStructure[Row](val prefix: Option[String], val extract: Row => SpViewRow, val merge: (Row, SpViewRow) => Row) - extends Relation[SpViewFields, SpViewRow, Row] - with SpViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, None)(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, None)(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpViewRow, merge: (NewRow, SpViewRow) => NewRow): SpViewStructure[NewRow] = - new SpViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala index bb06ed4ef0..471daad168 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SpqhViewFields[Row] { val id: Field[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait SpqhViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpqhViewFields extends SpqhViewStructure[SpqhViewRow](None, identity, (_, x) => x) +object SpqhViewFields { + val structure: Relation[SpqhViewFields, SpqhViewRow, SpqhViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) + extends Relation[SpqhViewFields, SpqhViewRow, Row] { + + override val fields: SpqhViewFields[Row] = new SpqhViewFields[Row] { + override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala index 8e1d21f48a..def54c6cde 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SpqhViewRepoImpl extends SpqhViewRepo { override def select: SelectBuilder[SpqhViewFields, SpqhViewRow] = { - SelectBuilderSql("sa.spqh", SpqhViewFields, SpqhViewRow.jdbcDecoder) + SelectBuilderSql("sa.spqh", SpqhViewFields.structure, SpqhViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SpqhViewRow] = { sql"""select "id", "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text from sa.spqh""".query(SpqhViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala deleted file mode 100644 index 34b89696d3..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/spqh/SpqhViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package spqh - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SpqhViewStructure[Row](val prefix: Option[String], val extract: Row => SpqhViewRow, val merge: (Row, SpqhViewRow) => Row) - extends Relation[SpqhViewFields, SpqhViewRow, Row] - with SpqhViewFields[Row] { outer => - - override val id = new Field[BusinessentityId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new Field[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), None)(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpqhViewRow, merge: (NewRow, SpqhViewRow) => NewRow): SpqhViewStructure[NewRow] = - new SpqhViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala index ba8f474bc0..a2c960adf2 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewFields.scala @@ -11,6 +11,8 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait SrViewFields[Row] { val id: Field[SalesreasonId, Row] @@ -19,5 +21,27 @@ trait SrViewFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SrViewFields extends SrViewStructure[SrViewRow](None, identity, (_, x) => x) +object SrViewFields { + val structure: Relation[SrViewFields, SrViewRow, SrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) + extends Relation[SrViewFields, SrViewRow, Row] { + + override val fields: SrViewFields[Row] = new SrViewFields[Row] { + override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala index aa5a7974f3..a31d2348d9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SrViewRepoImpl extends SrViewRepo { override def select: SelectBuilder[SrViewFields, SrViewRow] = { - SelectBuilderSql("sa.sr", SrViewFields, SrViewRow.jdbcDecoder) + SelectBuilderSql("sa.sr", SrViewFields.structure, SrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SrViewRow] = { sql"""select "id", "salesreasonid", "name", "reasontype", "modifieddate"::text from sa.sr""".query(SrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala deleted file mode 100644 index 1e139ef1a5..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sr/SrViewStructure.scala +++ /dev/null @@ -1,32 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class SrViewStructure[Row](val prefix: Option[String], val extract: Row => SrViewRow, val merge: (Row, SrViewRow) => Row) - extends Relation[SrViewFields, SrViewRow, Row] - with SrViewFields[Row] { outer => - - override val id = new Field[SalesreasonId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salesreasonid = new Field[SalesreasonId, Row](prefix, "salesreasonid", None, None)(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, None)(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SrViewRow, merge: (NewRow, SrViewRow) => NewRow): SrViewStructure[NewRow] = - new SrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala index 3a4d8cb334..256cd7fe24 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewFields.scala @@ -13,6 +13,8 @@ import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait StViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -27,5 +29,33 @@ trait StViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StViewFields extends StViewStructure[StViewRow](None, identity, (_, x) => x) +object StViewFields { + val structure: Relation[StViewFields, StViewRow, StViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) + extends Relation[StViewFields, StViewRow, Row] { + + override val fields: StViewFields[Row] = new StViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala index d7ef0e398c..989ed1e3ab 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class StViewRepoImpl extends StViewRepo { override def select: SelectBuilder[StViewFields, StViewRow] = { - SelectBuilderSql("sa.st", StViewFields, StViewRow.jdbcDecoder) + SelectBuilderSql("sa.st", StViewFields.structure, StViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, StViewRow] = { sql"""select "id", "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text from sa.st""".query(StViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala deleted file mode 100644 index eb457f7da7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/st/StViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package st - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class StViewStructure[Row](val prefix: Option[String], val extract: Row => StViewRow, val merge: (Row, StViewRow) => Row) - extends Relation[StViewFields, StViewRow, Row] - with StViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, None)(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, None)(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StViewRow, merge: (NewRow, StViewRow) => NewRow): StViewStructure[NewRow] = - new StViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala index 9b2188ab3b..b785d079a8 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SthViewFields[Row] { val id: Field[SalesterritoryId, Row] @@ -23,5 +25,29 @@ trait SthViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SthViewFields extends SthViewStructure[SthViewRow](None, identity, (_, x) => x) +object SthViewFields { + val structure: Relation[SthViewFields, SthViewRow, SthViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) + extends Relation[SthViewFields, SthViewRow, Row] { + + override val fields: SthViewFields[Row] = new SthViewFields[Row] { + override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala index 27d5f29d5f..6119380bc1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class SthViewRepoImpl extends SthViewRepo { override def select: SelectBuilder[SthViewFields, SthViewRow] = { - SelectBuilderSql("sa.sth", SthViewFields, SthViewRow.jdbcDecoder) + SelectBuilderSql("sa.sth", SthViewFields.structure, SthViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SthViewRow] = { sql"""select "id", "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text from sa.sth""".query(SthViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala deleted file mode 100644 index 77b4f4a831..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/sth/SthViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package sth - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SthViewStructure[Row](val prefix: Option[String], val extract: Row => SthViewRow, val merge: (Row, SthViewRow) => Row) - extends Relation[SthViewFields, SthViewRow, Row] - with SthViewFields[Row] { outer => - - override val id = new Field[SalesterritoryId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new Field[SalesterritoryId, Row](prefix, "territoryid", None, None)(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), None)(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), None)(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SthViewRow, merge: (NewRow, SthViewRow) => NewRow): SthViewStructure[NewRow] = - new SthViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala index 3a2d182b62..8cc4154f37 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewFields.scala @@ -14,6 +14,8 @@ import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import adventureworks.sales.salestaxrate.SalestaxrateId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt +import typo.dsl.Structure.Relation trait TrViewFields[Row] { val id: Field[SalestaxrateId, Row] @@ -25,5 +27,30 @@ trait TrViewFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object TrViewFields extends TrViewStructure[TrViewRow](None, identity, (_, x) => x) +object TrViewFields { + val structure: Relation[TrViewFields, TrViewRow, TrViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) + extends Relation[TrViewFields, TrViewRow, Row] { + + override val fields: TrViewFields[Row] = new TrViewFields[Row] { + override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) + override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.id, fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala index a3d4c54f64..5f009a894e 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class TrViewRepoImpl extends TrViewRepo { override def select: SelectBuilder[TrViewFields, TrViewRow] = { - SelectBuilderSql("sa.tr", TrViewFields, TrViewRow.jdbcDecoder) + SelectBuilderSql("sa.tr", TrViewFields.structure, TrViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, TrViewRow] = { sql"""select "id", "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text from sa.tr""".query(TrViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala deleted file mode 100644 index 2726f9efad..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sa/tr/TrViewStructure.scala +++ /dev/null @@ -1,38 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sa -package tr - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import adventureworks.sales.salestaxrate.SalestaxrateId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.Structure.Relation - -class TrViewStructure[Row](val prefix: Option[String], val extract: Row => TrViewRow, val merge: (Row, TrViewRow) => Row) - extends Relation[TrViewFields, TrViewRow, Row] - with TrViewFields[Row] { outer => - - override val id = new Field[SalestaxrateId, Row](prefix, "id", None, None)(x => extract(x).id, (row, value) => merge(row, extract(row).copy(id = value))) - override val salestaxrateid = new Field[SalestaxrateId, Row](prefix, "salestaxrateid", None, None)(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, None)(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, None)(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, None)(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, None)(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), None)(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](id, salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => TrViewRow, merge: (NewRow, TrViewRow) => NewRow): TrViewStructure[NewRow] = - new TrViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala index e63f0dd19c..0bdb14c8d5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.countryregion.CountryregionId import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CountryregioncurrencyFields[Row] { val countryregioncode: IdField[CountryregionId, Row] val currencycode: IdField[CurrencyId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CountryregioncurrencyFields extends CountryregioncurrencyStructure[CountryregioncurrencyRow](None, identity, (_, x) => x) +object CountryregioncurrencyFields { + val structure: Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, CountryregioncurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) + extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] { + + override val fields: CountryregioncurrencyFields[Row] = new CountryregioncurrencyFields[Row] { + override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.countryregioncode, fields.currencycode, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala index 2b6b437062..0b08347c68 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoImpl.scala @@ -29,7 +29,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { sql"""delete from sales.countryregioncurrency where "countryregioncode" = ${Segment.paramSegment(compositeId.countryregioncode)(CountryregionId.setter)} AND "currencycode" = ${Segment.paramSegment(compositeId.currencycode)(CurrencyId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields) + DeleteBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure) } override def insert(unsaved: CountryregioncurrencyRow): ZIO[ZConnection, Throwable, CountryregioncurrencyRow] = { sql"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") @@ -67,7 +67,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { streamingInsert(s"""COPY sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CountryregioncurrencyRowUnsaved.text) } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.jdbcDecoder) + SelectBuilderSql("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CountryregioncurrencyRow] = { sql"""select "countryregioncode", "currencycode", "modifieddate"::text from sales.countryregioncurrency""".query(CountryregioncurrencyRow.jdbcDecoder).selectStream @@ -82,7 +82,7 @@ class CountryregioncurrencyRepoImpl extends CountryregioncurrencyRepo { where "countryregioncode" = ${Segment.paramSegment(compositeId.countryregioncode)(CountryregionId.setter)} AND "currencycode" = ${Segment.paramSegment(compositeId.currencycode)(CurrencyId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields, CountryregioncurrencyRow.jdbcDecoder) + UpdateBuilder("sales.countryregioncurrency", CountryregioncurrencyFields.structure, CountryregioncurrencyRow.jdbcDecoder) } override def upsert(unsaved: CountryregioncurrencyRow): ZIO[ZConnection, Throwable, UpdateResult[CountryregioncurrencyRow]] = { sql"""insert into sales.countryregioncurrency("countryregioncode", "currencycode", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala index dfc7bc65b2..732e56b2a5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyRepoMock.scala @@ -29,7 +29,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def insert(unsaved: CountryregioncurrencyRow): ZIO[ZConnection, Throwable, CountryregioncurrencyRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - SelectBuilderMock(CountryregioncurrencyFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CountryregioncurrencyFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CountryregioncurrencyRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class CountryregioncurrencyRepoMock(toRow: Function1[CountryregioncurrencyRowUns } } override def update: UpdateBuilder[CountryregioncurrencyFields, CountryregioncurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CountryregioncurrencyFields.structure.fields, map) } override def upsert(unsaved: CountryregioncurrencyRow): ZIO[ZConnection, Throwable, UpdateResult[CountryregioncurrencyRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala deleted file mode 100644 index fe119bdf72..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/countryregioncurrency/CountryregioncurrencyStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package countryregioncurrency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.countryregion.CountryregionId -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CountryregioncurrencyStructure[Row](val prefix: Option[String], val extract: Row => CountryregioncurrencyRow, val merge: (Row, CountryregioncurrencyRow) => Row) - extends Relation[CountryregioncurrencyFields, CountryregioncurrencyRow, Row] - with CountryregioncurrencyFields[Row] { outer => - - override val countryregioncode = new IdField[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](countryregioncode, currencycode, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CountryregioncurrencyRow, merge: (NewRow, CountryregioncurrencyRow) => NewRow): CountryregioncurrencyStructure[NewRow] = - new CountryregioncurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala index b21f8ef928..7a086d6037 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoShort import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CreditcardFields[Row] { val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] @@ -21,5 +23,28 @@ trait CreditcardFields[Row] { val expyear: Field[TypoShort, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CreditcardFields extends CreditcardStructure[CreditcardRow](None, identity, (_, x) => x) +object CreditcardFields { + val structure: Relation[CreditcardFields, CreditcardRow, CreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) + extends Relation[CreditcardFields, CreditcardRow, Row] { + + override val fields: CreditcardFields[Row] = new CreditcardFields[Row] { + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) + override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) + override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) + override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.creditcardid, fields.cardtype, fields.cardnumber, fields.expmonth, fields.expyear, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala index e290dbef5b..ed4072dda6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoImpl.scala @@ -31,7 +31,7 @@ class CreditcardRepoImpl extends CreditcardRepo { sql"""delete from sales.creditcard where "creditcardid" = ${Segment.paramSegment(creditcardid)(/* user-picked */ CustomCreditcardId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilder("sales.creditcard", CreditcardFields) + DeleteBuilder("sales.creditcard", CreditcardFields.structure) } override def insert(unsaved: CreditcardRow): ZIO[ZConnection, Throwable, CreditcardRow] = { sql"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") @@ -75,7 +75,7 @@ class CreditcardRepoImpl extends CreditcardRepo { streamingInsert(s"""COPY sales.creditcard("cardtype", "cardnumber", "expmonth", "expyear", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CreditcardRowUnsaved.text) } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderSql("sales.creditcard", CreditcardFields, CreditcardRow.jdbcDecoder) + SelectBuilderSql("sales.creditcard", CreditcardFields.structure, CreditcardRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CreditcardRow] = { sql"""select "creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate"::text from sales.creditcard""".query(CreditcardRow.jdbcDecoder).selectStream @@ -97,7 +97,7 @@ class CreditcardRepoImpl extends CreditcardRepo { where "creditcardid" = ${Segment.paramSegment(creditcardid)(/* user-picked */ CustomCreditcardId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilder("sales.creditcard", CreditcardFields, CreditcardRow.jdbcDecoder) + UpdateBuilder("sales.creditcard", CreditcardFields.structure, CreditcardRow.jdbcDecoder) } override def upsert(unsaved: CreditcardRow): ZIO[ZConnection, Throwable, UpdateResult[CreditcardRow]] = { sql"""insert into sales.creditcard("creditcardid", "cardtype", "cardnumber", "expmonth", "expyear", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala index 4398d39824..cb02f7fae6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardRepoMock.scala @@ -31,7 +31,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], ZIO.succeed(map.remove(creditcardid).isDefined) } override def delete: DeleteBuilder[CreditcardFields, CreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, CreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, CreditcardFields.structure.fields, map) } override def insert(unsaved: CreditcardRow): ZIO[ZConnection, Throwable, CreditcardRow] = { ZIO.succeed { @@ -66,7 +66,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CreditcardFields, CreditcardRow] = { - SelectBuilderMock(CreditcardFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CreditcardFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CreditcardRow] = { ZStream.fromIterable(map.values) @@ -89,7 +89,7 @@ class CreditcardRepoMock(toRow: Function1[CreditcardRowUnsaved, CreditcardRow], } } override def update: UpdateBuilder[CreditcardFields, CreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, CreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, CreditcardFields.structure.fields, map) } override def upsert(unsaved: CreditcardRow): ZIO[ZConnection, Throwable, UpdateResult[CreditcardRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala deleted file mode 100644 index 4f259e9545..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/creditcard/CreditcardStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package creditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CreditcardStructure[Row](val prefix: Option[String], val extract: Row => CreditcardRow, val merge: (Row, CreditcardRow) => Row) - extends Relation[CreditcardFields, CreditcardRow, Row] - with CreditcardFields[Row] { outer => - - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val cardtype = new Field[/* max 50 chars */ String, Row](prefix, "cardtype", None, None)(x => extract(x).cardtype, (row, value) => merge(row, extract(row).copy(cardtype = value))) - override val cardnumber = new Field[/* max 25 chars */ String, Row](prefix, "cardnumber", None, None)(x => extract(x).cardnumber, (row, value) => merge(row, extract(row).copy(cardnumber = value))) - override val expmonth = new Field[TypoShort, Row](prefix, "expmonth", None, Some("int2"))(x => extract(x).expmonth, (row, value) => merge(row, extract(row).copy(expmonth = value))) - override val expyear = new Field[TypoShort, Row](prefix, "expyear", None, Some("int2"))(x => extract(x).expyear, (row, value) => merge(row, extract(row).copy(expyear = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](creditcardid, cardtype, cardnumber, expmonth, expyear, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CreditcardRow, merge: (NewRow, CreditcardRow) => NewRow): CreditcardStructure[NewRow] = - new CreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala index 079f2ff5cf..960ab415e6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyFields.scala @@ -10,12 +10,34 @@ package currency import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyFields[Row] { val currencycode: IdField[CurrencyId, Row] val name: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyFields extends CurrencyStructure[CurrencyRow](None, identity, (_, x) => x) +object CurrencyFields { + val structure: Relation[CurrencyFields, CurrencyRow, CurrencyRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) + extends Relation[CurrencyFields, CurrencyRow, Row] { + + override val fields: CurrencyFields[Row] = new CurrencyFields[Row] { + override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencycode, fields.name, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala index 18f69ea432..2112a24bd4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoImpl.scala @@ -28,7 +28,7 @@ class CurrencyRepoImpl extends CurrencyRepo { sql"""delete from sales.currency where "currencycode" = ${Segment.paramSegment(currencycode)(CurrencyId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilder("sales.currency", CurrencyFields) + DeleteBuilder("sales.currency", CurrencyFields.structure) } override def insert(unsaved: CurrencyRow): ZIO[ZConnection, Throwable, CurrencyRow] = { sql"""insert into sales.currency("currencycode", "name", "modifieddate") @@ -66,7 +66,7 @@ class CurrencyRepoImpl extends CurrencyRepo { streamingInsert(s"""COPY sales.currency("currencycode", "name", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CurrencyRowUnsaved.text) } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderSql("sales.currency", CurrencyFields, CurrencyRow.jdbcDecoder) + SelectBuilderSql("sales.currency", CurrencyFields.structure, CurrencyRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CurrencyRow] = { sql"""select "currencycode", "name", "modifieddate"::text from sales.currency""".query(CurrencyRow.jdbcDecoder).selectStream @@ -85,7 +85,7 @@ class CurrencyRepoImpl extends CurrencyRepo { where "currencycode" = ${Segment.paramSegment(currencycode)(CurrencyId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilder("sales.currency", CurrencyFields, CurrencyRow.jdbcDecoder) + UpdateBuilder("sales.currency", CurrencyFields.structure, CurrencyRow.jdbcDecoder) } override def upsert(unsaved: CurrencyRow): ZIO[ZConnection, Throwable, UpdateResult[CurrencyRow]] = { sql"""insert into sales.currency("currencycode", "name", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala index 613dafad3c..9f0c8e9606 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyRepoMock.scala @@ -29,7 +29,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], ZIO.succeed(map.remove(currencycode).isDefined) } override def delete: DeleteBuilder[CurrencyFields, CurrencyRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyFields.structure.fields, map) } override def insert(unsaved: CurrencyRow): ZIO[ZConnection, Throwable, CurrencyRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CurrencyFields, CurrencyRow] = { - SelectBuilderMock(CurrencyFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CurrencyFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CurrencyRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class CurrencyRepoMock(toRow: Function1[CurrencyRowUnsaved, CurrencyRow], } } override def update: UpdateBuilder[CurrencyFields, CurrencyRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyFields.structure.fields, map) } override def upsert(unsaved: CurrencyRow): ZIO[ZConnection, Throwable, UpdateResult[CurrencyRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala deleted file mode 100644 index 7eeeac8bd7..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currency/CurrencyStructure.scala +++ /dev/null @@ -1,30 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currency - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyStructure[Row](val prefix: Option[String], val extract: Row => CurrencyRow, val merge: (Row, CurrencyRow) => Row) - extends Relation[CurrencyFields, CurrencyRow, Row] - with CurrencyFields[Row] { outer => - - override val currencycode = new IdField[CurrencyId, Row](prefix, "currencycode", None, Some("bpchar"))(x => extract(x).currencycode, (row, value) => merge(row, extract(row).copy(currencycode = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencycode, name, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyRow, merge: (NewRow, CurrencyRow) => NewRow): CurrencyStructure[NewRow] = - new CurrencyStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala index ec65aaace3..17def49bdc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateFields.scala @@ -10,7 +10,9 @@ package currencyrate import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.currency.CurrencyId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait CurrencyrateFields[Row] { val currencyrateid: IdField[CurrencyrateId, Row] @@ -21,5 +23,29 @@ trait CurrencyrateFields[Row] { val endofdayrate: Field[BigDecimal, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CurrencyrateFields extends CurrencyrateStructure[CurrencyrateRow](None, identity, (_, x) => x) +object CurrencyrateFields { + val structure: Relation[CurrencyrateFields, CurrencyrateRow, CurrencyrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) + extends Relation[CurrencyrateFields, CurrencyrateRow, Row] { + + override val fields: CurrencyrateFields[Row] = new CurrencyrateFields[Row] { + override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) + override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) + override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) + override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) + override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.currencyrateid, fields.currencyratedate, fields.fromcurrencycode, fields.tocurrencycode, fields.averagerate, fields.endofdayrate, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala index 4a76a596d6..abcab00cc3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoImpl.scala @@ -29,7 +29,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { sql"""delete from sales.currencyrate where "currencyrateid" = ${Segment.paramSegment(currencyrateid)(CurrencyrateId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilder("sales.currencyrate", CurrencyrateFields) + DeleteBuilder("sales.currencyrate", CurrencyrateFields.structure) } override def insert(unsaved: CurrencyrateRow): ZIO[ZConnection, Throwable, CurrencyrateRow] = { sql"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") @@ -74,7 +74,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { streamingInsert(s"""COPY sales.currencyrate("currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "currencyrateid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CurrencyrateRowUnsaved.text) } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderSql("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.jdbcDecoder) + SelectBuilderSql("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CurrencyrateRow] = { sql"""select "currencyrateid", "currencyratedate"::text, "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate"::text from sales.currencyrate""".query(CurrencyrateRow.jdbcDecoder).selectStream @@ -97,7 +97,7 @@ class CurrencyrateRepoImpl extends CurrencyrateRepo { where "currencyrateid" = ${Segment.paramSegment(currencyrateid)(CurrencyrateId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilder("sales.currencyrate", CurrencyrateFields, CurrencyrateRow.jdbcDecoder) + UpdateBuilder("sales.currencyrate", CurrencyrateFields.structure, CurrencyrateRow.jdbcDecoder) } override def upsert(unsaved: CurrencyrateRow): ZIO[ZConnection, Throwable, UpdateResult[CurrencyrateRow]] = { sql"""insert into sales.currencyrate("currencyrateid", "currencyratedate", "fromcurrencycode", "tocurrencycode", "averagerate", "endofdayrate", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala index 125956207f..63f577c887 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateRepoMock.scala @@ -29,7 +29,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate ZIO.succeed(map.remove(currencyrateid).isDefined) } override def delete: DeleteBuilder[CurrencyrateFields, CurrencyrateRow] = { - DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields, map) + DeleteBuilderMock(DeleteParams.empty, CurrencyrateFields.structure.fields, map) } override def insert(unsaved: CurrencyrateRow): ZIO[ZConnection, Throwable, CurrencyrateRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CurrencyrateFields, CurrencyrateRow] = { - SelectBuilderMock(CurrencyrateFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CurrencyrateFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CurrencyrateRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class CurrencyrateRepoMock(toRow: Function1[CurrencyrateRowUnsaved, Currencyrate } } override def update: UpdateBuilder[CurrencyrateFields, CurrencyrateRow] = { - UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields, map) + UpdateBuilderMock(UpdateParams.empty, CurrencyrateFields.structure.fields, map) } override def upsert(unsaved: CurrencyrateRow): ZIO[ZConnection, Throwable, UpdateResult[CurrencyrateRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala deleted file mode 100644 index 72836802d4..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/currencyrate/CurrencyrateStructure.scala +++ /dev/null @@ -1,34 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package currencyrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.currency.CurrencyId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class CurrencyrateStructure[Row](val prefix: Option[String], val extract: Row => CurrencyrateRow, val merge: (Row, CurrencyrateRow) => Row) - extends Relation[CurrencyrateFields, CurrencyrateRow, Row] - with CurrencyrateFields[Row] { outer => - - override val currencyrateid = new IdField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val currencyratedate = new Field[TypoLocalDateTime, Row](prefix, "currencyratedate", Some("text"), Some("timestamp"))(x => extract(x).currencyratedate, (row, value) => merge(row, extract(row).copy(currencyratedate = value))) - override val fromcurrencycode = new Field[CurrencyId, Row](prefix, "fromcurrencycode", None, Some("bpchar"))(x => extract(x).fromcurrencycode, (row, value) => merge(row, extract(row).copy(fromcurrencycode = value))) - override val tocurrencycode = new Field[CurrencyId, Row](prefix, "tocurrencycode", None, Some("bpchar"))(x => extract(x).tocurrencycode, (row, value) => merge(row, extract(row).copy(tocurrencycode = value))) - override val averagerate = new Field[BigDecimal, Row](prefix, "averagerate", None, Some("numeric"))(x => extract(x).averagerate, (row, value) => merge(row, extract(row).copy(averagerate = value))) - override val endofdayrate = new Field[BigDecimal, Row](prefix, "endofdayrate", None, Some("numeric"))(x => extract(x).endofdayrate, (row, value) => merge(row, extract(row).copy(endofdayrate = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](currencyrateid, currencyratedate, fromcurrencycode, tocurrencycode, averagerate, endofdayrate, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CurrencyrateRow, merge: (NewRow, CurrencyrateRow) => NewRow): CurrencyrateStructure[NewRow] = - new CurrencyrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala index 1710962884..e558f1e8fd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait CustomerFields[Row] { val customerid: IdField[CustomerId, Row] @@ -23,5 +25,28 @@ trait CustomerFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object CustomerFields extends CustomerStructure[CustomerRow](None, identity, (_, x) => x) +object CustomerFields { + val structure: Relation[CustomerFields, CustomerRow, CustomerRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) + extends Relation[CustomerFields, CustomerRow, Row] { + + override val fields: CustomerFields[Row] = new CustomerFields[Row] { + override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) + override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.customerid, fields.personid, fields.storeid, fields.territoryid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala index 93416fb32c..dc8b956784 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoImpl.scala @@ -31,7 +31,7 @@ class CustomerRepoImpl extends CustomerRepo { sql"""delete from sales.customer where "customerid" = ${Segment.paramSegment(customerid)(CustomerId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilder("sales.customer", CustomerFields) + DeleteBuilder("sales.customer", CustomerFields.structure) } override def insert(unsaved: CustomerRow): ZIO[ZConnection, Throwable, CustomerRow] = { sql"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") @@ -78,7 +78,7 @@ class CustomerRepoImpl extends CustomerRepo { streamingInsert(s"""COPY sales.customer("personid", "storeid", "territoryid", "customerid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(CustomerRowUnsaved.text) } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderSql("sales.customer", CustomerFields, CustomerRow.jdbcDecoder) + SelectBuilderSql("sales.customer", CustomerFields.structure, CustomerRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, CustomerRow] = { sql"""select "customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate"::text from sales.customer""".query(CustomerRow.jdbcDecoder).selectStream @@ -100,7 +100,7 @@ class CustomerRepoImpl extends CustomerRepo { where "customerid" = ${Segment.paramSegment(customerid)(CustomerId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilder("sales.customer", CustomerFields, CustomerRow.jdbcDecoder) + UpdateBuilder("sales.customer", CustomerFields.structure, CustomerRow.jdbcDecoder) } override def upsert(unsaved: CustomerRow): ZIO[ZConnection, Throwable, UpdateResult[CustomerRow]] = { sql"""insert into sales.customer("customerid", "personid", "storeid", "territoryid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala index 3dc477b67b..80ed907f74 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerRepoMock.scala @@ -29,7 +29,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], ZIO.succeed(map.remove(customerid).isDefined) } override def delete: DeleteBuilder[CustomerFields, CustomerRow] = { - DeleteBuilderMock(DeleteParams.empty, CustomerFields, map) + DeleteBuilderMock(DeleteParams.empty, CustomerFields.structure.fields, map) } override def insert(unsaved: CustomerRow): ZIO[ZConnection, Throwable, CustomerRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[CustomerFields, CustomerRow] = { - SelectBuilderMock(CustomerFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(CustomerFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, CustomerRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class CustomerRepoMock(toRow: Function1[CustomerRowUnsaved, CustomerRow], } } override def update: UpdateBuilder[CustomerFields, CustomerRow] = { - UpdateBuilderMock(UpdateParams.empty, CustomerFields, map) + UpdateBuilderMock(UpdateParams.empty, CustomerFields.structure.fields, map) } override def upsert(unsaved: CustomerRow): ZIO[ZConnection, Throwable, UpdateResult[CustomerRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala deleted file mode 100644 index 079a4d5365..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/customer/CustomerStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package customer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class CustomerStructure[Row](val prefix: Option[String], val extract: Row => CustomerRow, val merge: (Row, CustomerRow) => Row) - extends Relation[CustomerFields, CustomerRow, Row] - with CustomerFields[Row] { outer => - - override val customerid = new IdField[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val personid = new OptField[BusinessentityId, Row](prefix, "personid", None, Some("int4"))(x => extract(x).personid, (row, value) => merge(row, extract(row).copy(personid = value))) - override val storeid = new OptField[BusinessentityId, Row](prefix, "storeid", None, Some("int4"))(x => extract(x).storeid, (row, value) => merge(row, extract(row).copy(storeid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](customerid, personid, storeid, territoryid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => CustomerRow, merge: (NewRow, CustomerRow) => NewRow): CustomerStructure[NewRow] = - new CustomerStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala index be1477987f..122d7418f1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.person.businessentity.BusinessentityId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait PersoncreditcardFields[Row] { val businessentityid: IdField[BusinessentityId, Row] val creditcardid: IdField[/* user-picked */ CustomCreditcardId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object PersoncreditcardFields extends PersoncreditcardStructure[PersoncreditcardRow](None, identity, (_, x) => x) +object PersoncreditcardFields { + val structure: Relation[PersoncreditcardFields, PersoncreditcardRow, PersoncreditcardRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) + extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] { + + override val fields: PersoncreditcardFields[Row] = new PersoncreditcardFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.creditcardid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala index 8aa01b0050..557a996f9d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoImpl.scala @@ -29,7 +29,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { sql"""delete from sales.personcreditcard where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "creditcardid" = ${Segment.paramSegment(compositeId.creditcardid)(/* user-picked */ CustomCreditcardId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilder("sales.personcreditcard", PersoncreditcardFields) + DeleteBuilder("sales.personcreditcard", PersoncreditcardFields.structure) } override def insert(unsaved: PersoncreditcardRow): ZIO[ZConnection, Throwable, PersoncreditcardRow] = { sql"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") @@ -67,7 +67,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { streamingInsert(s"""COPY sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(PersoncreditcardRowUnsaved.text) } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.jdbcDecoder) + SelectBuilderSql("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, PersoncreditcardRow] = { sql"""select "businessentityid", "creditcardid", "modifieddate"::text from sales.personcreditcard""".query(PersoncreditcardRow.jdbcDecoder).selectStream @@ -82,7 +82,7 @@ class PersoncreditcardRepoImpl extends PersoncreditcardRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "creditcardid" = ${Segment.paramSegment(compositeId.creditcardid)(/* user-picked */ CustomCreditcardId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilder("sales.personcreditcard", PersoncreditcardFields, PersoncreditcardRow.jdbcDecoder) + UpdateBuilder("sales.personcreditcard", PersoncreditcardFields.structure, PersoncreditcardRow.jdbcDecoder) } override def upsert(unsaved: PersoncreditcardRow): ZIO[ZConnection, Throwable, UpdateResult[PersoncreditcardRow]] = { sql"""insert into sales.personcreditcard("businessentityid", "creditcardid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala index fb6a841064..e51b857d0f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardRepoMock.scala @@ -29,7 +29,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields, map) + DeleteBuilderMock(DeleteParams.empty, PersoncreditcardFields.structure.fields, map) } override def insert(unsaved: PersoncreditcardRow): ZIO[ZConnection, Throwable, PersoncreditcardRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - SelectBuilderMock(PersoncreditcardFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(PersoncreditcardFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, PersoncreditcardRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class PersoncreditcardRepoMock(toRow: Function1[PersoncreditcardRowUnsaved, Pers } } override def update: UpdateBuilder[PersoncreditcardFields, PersoncreditcardRow] = { - UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields, map) + UpdateBuilderMock(UpdateParams.empty, PersoncreditcardFields.structure.fields, map) } override def upsert(unsaved: PersoncreditcardRow): ZIO[ZConnection, Throwable, UpdateResult[PersoncreditcardRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala deleted file mode 100644 index a2f37949c1..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/personcreditcard/PersoncreditcardStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package personcreditcard - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class PersoncreditcardStructure[Row](val prefix: Option[String], val extract: Row => PersoncreditcardRow, val merge: (Row, PersoncreditcardRow) => Row) - extends Relation[PersoncreditcardFields, PersoncreditcardRow, Row] - with PersoncreditcardFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val creditcardid = new IdField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, creditcardid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => PersoncreditcardRow, merge: (NewRow, PersoncreditcardRow) => NewRow): PersoncreditcardStructure[NewRow] = - new PersoncreditcardStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala index 010bff8ba2..d624977d55 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailFields.scala @@ -14,8 +14,10 @@ import adventureworks.production.product.ProductId import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderdetailFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -29,5 +31,32 @@ trait SalesorderdetailFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderdetailFields extends SalesorderdetailStructure[SalesorderdetailRow](None, identity, (_, x) => x) +object SalesorderdetailFields { + val structure: Relation[SalesorderdetailFields, SalesorderdetailRow, SalesorderdetailRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) + extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] { + + override val fields: SalesorderdetailFields[Row] = new SalesorderdetailFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) + override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) + override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) + override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesorderdetailid, fields.carriertrackingnumber, fields.orderqty, fields.productid, fields.specialofferid, fields.unitprice, fields.unitpricediscount, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala index 07f04607f6..b3a0535096 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoImpl.scala @@ -33,7 +33,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { sql"""delete from sales.salesorderdetail where "salesorderid" = ${Segment.paramSegment(compositeId.salesorderid)(SalesorderheaderId.setter)} AND "salesorderdetailid" = ${Segment.paramSegment(compositeId.salesorderdetailid)(Setter.intSetter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields) + DeleteBuilder("sales.salesorderdetail", SalesorderdetailFields.structure) } override def insert(unsaved: SalesorderdetailRow): ZIO[ZConnection, Throwable, SalesorderdetailRow] = { sql"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") @@ -87,7 +87,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { streamingInsert(s"""COPY sales.salesorderdetail("salesorderid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "salesorderdetailid", "unitpricediscount", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderdetailRowUnsaved.text) } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.jdbcDecoder) + SelectBuilderSql("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderdetailRow] = { sql"""select "salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate"::text from sales.salesorderdetail""".query(SalesorderdetailRow.jdbcDecoder).selectStream @@ -109,7 +109,7 @@ class SalesorderdetailRepoImpl extends SalesorderdetailRepo { where "salesorderid" = ${Segment.paramSegment(compositeId.salesorderid)(SalesorderheaderId.setter)} AND "salesorderdetailid" = ${Segment.paramSegment(compositeId.salesorderdetailid)(Setter.intSetter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields, SalesorderdetailRow.jdbcDecoder) + UpdateBuilder("sales.salesorderdetail", SalesorderdetailFields.structure, SalesorderdetailRow.jdbcDecoder) } override def upsert(unsaved: SalesorderdetailRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderdetailRow]] = { sql"""insert into sales.salesorderdetail("salesorderid", "salesorderdetailid", "carriertrackingnumber", "orderqty", "productid", "specialofferid", "unitprice", "unitpricediscount", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala index 38117d6be6..d0563563ea 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailRepoMock.scala @@ -29,7 +29,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderdetailFields.structure.fields, map) } override def insert(unsaved: SalesorderdetailRow): ZIO[ZConnection, Throwable, SalesorderdetailRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - SelectBuilderMock(SalesorderdetailFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesorderdetailFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderdetailRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class SalesorderdetailRepoMock(toRow: Function1[SalesorderdetailRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderdetailFields, SalesorderdetailRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderdetailFields.structure.fields, map) } override def upsert(unsaved: SalesorderdetailRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderdetailRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala deleted file mode 100644 index c078344b97..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderdetail/SalesorderdetailStructure.scala +++ /dev/null @@ -1,42 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderdetail - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderdetailStructure[Row](val prefix: Option[String], val extract: Row => SalesorderdetailRow, val merge: (Row, SalesorderdetailRow) => Row) - extends Relation[SalesorderdetailFields, SalesorderdetailRow, Row] - with SalesorderdetailFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesorderdetailid = new IdField[Int, Row](prefix, "salesorderdetailid", None, Some("int4"))(x => extract(x).salesorderdetailid, (row, value) => merge(row, extract(row).copy(salesorderdetailid = value))) - override val carriertrackingnumber = new OptField[/* max 25 chars */ String, Row](prefix, "carriertrackingnumber", None, None)(x => extract(x).carriertrackingnumber, (row, value) => merge(row, extract(row).copy(carriertrackingnumber = value))) - override val orderqty = new Field[TypoShort, Row](prefix, "orderqty", None, Some("int2"))(x => extract(x).orderqty, (row, value) => merge(row, extract(row).copy(orderqty = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val specialofferid = new Field[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val unitprice = new Field[BigDecimal, Row](prefix, "unitprice", None, Some("numeric"))(x => extract(x).unitprice, (row, value) => merge(row, extract(row).copy(unitprice = value))) - override val unitpricediscount = new Field[BigDecimal, Row](prefix, "unitpricediscount", None, Some("numeric"))(x => extract(x).unitpricediscount, (row, value) => merge(row, extract(row).copy(unitpricediscount = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesorderdetailid, carriertrackingnumber, orderqty, productid, specialofferid, unitprice, unitpricediscount, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderdetailRow, merge: (NewRow, SalesorderdetailRow) => NewRow): SalesorderdetailStructure[NewRow] = - new SalesorderdetailStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala index f1460d2735..51ae860197 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderFields.scala @@ -21,8 +21,10 @@ import adventureworks.sales.customer.CustomerId import adventureworks.sales.salesterritory.SalesterritoryId import adventureworks.userdefined.CustomCreditcardId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesorderheaderFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] @@ -51,5 +53,47 @@ trait SalesorderheaderFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheaderFields extends SalesorderheaderStructure[SalesorderheaderRow](None, identity, (_, x) => x) +object SalesorderheaderFields { + val structure: Relation[SalesorderheaderFields, SalesorderheaderRow, SalesorderheaderRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) + extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] { + + override val fields: SalesorderheaderFields[Row] = new SalesorderheaderFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) + override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) + override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) + override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) + override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) + override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) + override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) + override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) + override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) + override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) + override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) + override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) + override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) + override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) + override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) + override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) + override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) + override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) + override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.revisionnumber, fields.orderdate, fields.duedate, fields.shipdate, fields.status, fields.onlineorderflag, fields.purchaseordernumber, fields.accountnumber, fields.customerid, fields.salespersonid, fields.territoryid, fields.billtoaddressid, fields.shiptoaddressid, fields.shipmethodid, fields.creditcardid, fields.creditcardapprovalcode, fields.currencyrateid, fields.subtotal, fields.taxamt, fields.freight, fields.totaldue, fields.comment, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala index 4288b12d10..52deca30e4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoImpl.scala @@ -40,7 +40,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { sql"""delete from sales.salesorderheader where "salesorderid" = ${Segment.paramSegment(salesorderid)(SalesorderheaderId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilder("sales.salesorderheader", SalesorderheaderFields) + DeleteBuilder("sales.salesorderheader", SalesorderheaderFields.structure) } override def insert(unsaved: SalesorderheaderRow): ZIO[ZConnection, Throwable, SalesorderheaderRow] = { sql"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") @@ -127,7 +127,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { streamingInsert(s"""COPY sales.salesorderheader("duedate", "shipdate", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "totaldue", "comment", "salesorderid", "revisionnumber", "orderdate", "status", "onlineorderflag", "subtotal", "taxamt", "freight", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderheaderRowUnsaved.text) } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.jdbcDecoder) + SelectBuilderSql("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderheaderRow] = { sql"""select "salesorderid", "revisionnumber", "orderdate"::text, "duedate"::text, "shipdate"::text, "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate"::text from sales.salesorderheader""".query(SalesorderheaderRow.jdbcDecoder).selectStream @@ -168,7 +168,7 @@ class SalesorderheaderRepoImpl extends SalesorderheaderRepo { where "salesorderid" = ${Segment.paramSegment(salesorderid)(SalesorderheaderId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilder("sales.salesorderheader", SalesorderheaderFields, SalesorderheaderRow.jdbcDecoder) + UpdateBuilder("sales.salesorderheader", SalesorderheaderFields.structure, SalesorderheaderRow.jdbcDecoder) } override def upsert(unsaved: SalesorderheaderRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderheaderRow]] = { sql"""insert into sales.salesorderheader("salesorderid", "revisionnumber", "orderdate", "duedate", "shipdate", "status", "onlineorderflag", "purchaseordernumber", "accountnumber", "customerid", "salespersonid", "territoryid", "billtoaddressid", "shiptoaddressid", "shipmethodid", "creditcardid", "creditcardapprovalcode", "currencyrateid", "subtotal", "taxamt", "freight", "totaldue", "comment", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala index 6b24a7544a..9cfabae07c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderRepoMock.scala @@ -29,7 +29,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale ZIO.succeed(map.remove(salesorderid).isDefined) } override def delete: DeleteBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheaderFields.structure.fields, map) } override def insert(unsaved: SalesorderheaderRow): ZIO[ZConnection, Throwable, SalesorderheaderRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - SelectBuilderMock(SalesorderheaderFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesorderheaderFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderheaderRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class SalesorderheaderRepoMock(toRow: Function1[SalesorderheaderRowUnsaved, Sale } } override def update: UpdateBuilder[SalesorderheaderFields, SalesorderheaderRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheaderFields.structure.fields, map) } override def upsert(unsaved: SalesorderheaderRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderheaderRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala deleted file mode 100644 index 8e071107e4..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheader/SalesorderheaderStructure.scala +++ /dev/null @@ -1,64 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheader - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.address.AddressId -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.AccountNumber -import adventureworks.public.Flag -import adventureworks.public.OrderNumber -import adventureworks.purchasing.shipmethod.ShipmethodId -import adventureworks.sales.currencyrate.CurrencyrateId -import adventureworks.sales.customer.CustomerId -import adventureworks.sales.salesterritory.SalesterritoryId -import adventureworks.userdefined.CustomCreditcardId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesorderheaderStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheaderRow, val merge: (Row, SalesorderheaderRow) => Row) - extends Relation[SalesorderheaderFields, SalesorderheaderRow, Row] - with SalesorderheaderFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val revisionnumber = new Field[TypoShort, Row](prefix, "revisionnumber", None, Some("int2"))(x => extract(x).revisionnumber, (row, value) => merge(row, extract(row).copy(revisionnumber = value))) - override val orderdate = new Field[TypoLocalDateTime, Row](prefix, "orderdate", Some("text"), Some("timestamp"))(x => extract(x).orderdate, (row, value) => merge(row, extract(row).copy(orderdate = value))) - override val duedate = new Field[TypoLocalDateTime, Row](prefix, "duedate", Some("text"), Some("timestamp"))(x => extract(x).duedate, (row, value) => merge(row, extract(row).copy(duedate = value))) - override val shipdate = new OptField[TypoLocalDateTime, Row](prefix, "shipdate", Some("text"), Some("timestamp"))(x => extract(x).shipdate, (row, value) => merge(row, extract(row).copy(shipdate = value))) - override val status = new Field[TypoShort, Row](prefix, "status", None, Some("int2"))(x => extract(x).status, (row, value) => merge(row, extract(row).copy(status = value))) - override val onlineorderflag = new Field[Flag, Row](prefix, "onlineorderflag", None, Some("bool"))(x => extract(x).onlineorderflag, (row, value) => merge(row, extract(row).copy(onlineorderflag = value))) - override val purchaseordernumber = new OptField[OrderNumber, Row](prefix, "purchaseordernumber", None, Some("varchar"))(x => extract(x).purchaseordernumber, (row, value) => merge(row, extract(row).copy(purchaseordernumber = value))) - override val accountnumber = new OptField[AccountNumber, Row](prefix, "accountnumber", None, Some("varchar"))(x => extract(x).accountnumber, (row, value) => merge(row, extract(row).copy(accountnumber = value))) - override val customerid = new Field[CustomerId, Row](prefix, "customerid", None, Some("int4"))(x => extract(x).customerid, (row, value) => merge(row, extract(row).copy(customerid = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val billtoaddressid = new Field[AddressId, Row](prefix, "billtoaddressid", None, Some("int4"))(x => extract(x).billtoaddressid, (row, value) => merge(row, extract(row).copy(billtoaddressid = value))) - override val shiptoaddressid = new Field[AddressId, Row](prefix, "shiptoaddressid", None, Some("int4"))(x => extract(x).shiptoaddressid, (row, value) => merge(row, extract(row).copy(shiptoaddressid = value))) - override val shipmethodid = new Field[ShipmethodId, Row](prefix, "shipmethodid", None, Some("int4"))(x => extract(x).shipmethodid, (row, value) => merge(row, extract(row).copy(shipmethodid = value))) - override val creditcardid = new OptField[/* user-picked */ CustomCreditcardId, Row](prefix, "creditcardid", None, Some("int4"))(x => extract(x).creditcardid, (row, value) => merge(row, extract(row).copy(creditcardid = value))) - override val creditcardapprovalcode = new OptField[/* max 15 chars */ String, Row](prefix, "creditcardapprovalcode", None, None)(x => extract(x).creditcardapprovalcode, (row, value) => merge(row, extract(row).copy(creditcardapprovalcode = value))) - override val currencyrateid = new OptField[CurrencyrateId, Row](prefix, "currencyrateid", None, Some("int4"))(x => extract(x).currencyrateid, (row, value) => merge(row, extract(row).copy(currencyrateid = value))) - override val subtotal = new Field[BigDecimal, Row](prefix, "subtotal", None, Some("numeric"))(x => extract(x).subtotal, (row, value) => merge(row, extract(row).copy(subtotal = value))) - override val taxamt = new Field[BigDecimal, Row](prefix, "taxamt", None, Some("numeric"))(x => extract(x).taxamt, (row, value) => merge(row, extract(row).copy(taxamt = value))) - override val freight = new Field[BigDecimal, Row](prefix, "freight", None, Some("numeric"))(x => extract(x).freight, (row, value) => merge(row, extract(row).copy(freight = value))) - override val totaldue = new OptField[BigDecimal, Row](prefix, "totaldue", None, Some("numeric"))(x => extract(x).totaldue, (row, value) => merge(row, extract(row).copy(totaldue = value))) - override val comment = new OptField[/* max 128 chars */ String, Row](prefix, "comment", None, None)(x => extract(x).comment, (row, value) => merge(row, extract(row).copy(comment = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, revisionnumber, orderdate, duedate, shipdate, status, onlineorderflag, purchaseordernumber, accountnumber, customerid, salespersonid, territoryid, billtoaddressid, shiptoaddressid, shipmethodid, creditcardid, creditcardapprovalcode, currencyrateid, subtotal, taxamt, freight, totaldue, comment, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheaderRow, merge: (NewRow, SalesorderheaderRow) => NewRow): SalesorderheaderStructure[NewRow] = - new SalesorderheaderStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala index cb32083660..be3ec35703 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonFields.scala @@ -11,12 +11,34 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.sales.salesorderheader.SalesorderheaderId import adventureworks.sales.salesreason.SalesreasonId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesorderheadersalesreasonFields[Row] { val salesorderid: IdField[SalesorderheaderId, Row] val salesreasonid: IdField[SalesreasonId, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesorderheadersalesreasonFields extends SalesorderheadersalesreasonStructure[SalesorderheadersalesreasonRow](None, identity, (_, x) => x) +object SalesorderheadersalesreasonFields { + val structure: Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, SalesorderheadersalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) + extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] { + + override val fields: SalesorderheadersalesreasonFields[Row] = new SalesorderheadersalesreasonFields[Row] { + override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesorderid, fields.salesreasonid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala index f20652be3c..a212f3480c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoImpl.scala @@ -29,7 +29,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep sql"""delete from sales.salesorderheadersalesreason where "salesorderid" = ${Segment.paramSegment(compositeId.salesorderid)(SalesorderheaderId.setter)} AND "salesreasonid" = ${Segment.paramSegment(compositeId.salesreasonid)(SalesreasonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields) + DeleteBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure) } override def insert(unsaved: SalesorderheadersalesreasonRow): ZIO[ZConnection, Throwable, SalesorderheadersalesreasonRow] = { sql"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") @@ -67,7 +67,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep streamingInsert(s"""COPY sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesorderheadersalesreasonRowUnsaved.text) } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.jdbcDecoder) + SelectBuilderSql("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderheadersalesreasonRow] = { sql"""select "salesorderid", "salesreasonid", "modifieddate"::text from sales.salesorderheadersalesreason""".query(SalesorderheadersalesreasonRow.jdbcDecoder).selectStream @@ -82,7 +82,7 @@ class SalesorderheadersalesreasonRepoImpl extends SalesorderheadersalesreasonRep where "salesorderid" = ${Segment.paramSegment(compositeId.salesorderid)(SalesorderheaderId.setter)} AND "salesreasonid" = ${Segment.paramSegment(compositeId.salesreasonid)(SalesreasonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow.jdbcDecoder) + UpdateBuilder("sales.salesorderheadersalesreason", SalesorderheadersalesreasonFields.structure, SalesorderheadersalesreasonRow.jdbcDecoder) } override def upsert(unsaved: SalesorderheadersalesreasonRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderheadersalesreasonRow]] = { sql"""insert into sales.salesorderheadersalesreason("salesorderid", "salesreasonid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala index cef47fabd5..35ccadf3e4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonRepoMock.scala @@ -29,7 +29,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesorderheadersalesreasonRow): ZIO[ZConnection, Throwable, SalesorderheadersalesreasonRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - SelectBuilderMock(SalesorderheadersalesreasonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesorderheadersalesreasonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesorderheadersalesreasonRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class SalesorderheadersalesreasonRepoMock(toRow: Function1[Salesorderheadersales } } override def update: UpdateBuilder[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesorderheadersalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesorderheadersalesreasonRow): ZIO[ZConnection, Throwable, UpdateResult[SalesorderheadersalesreasonRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala deleted file mode 100644 index d463ac686b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesorderheadersalesreason/SalesorderheadersalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesorderheadersalesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.sales.salesorderheader.SalesorderheaderId -import adventureworks.sales.salesreason.SalesreasonId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesorderheadersalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesorderheadersalesreasonRow, val merge: (Row, SalesorderheadersalesreasonRow) => Row) - extends Relation[SalesorderheadersalesreasonFields, SalesorderheadersalesreasonRow, Row] - with SalesorderheadersalesreasonFields[Row] { outer => - - override val salesorderid = new IdField[SalesorderheaderId, Row](prefix, "salesorderid", None, Some("int4"))(x => extract(x).salesorderid, (row, value) => merge(row, extract(row).copy(salesorderid = value))) - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesorderid, salesreasonid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesorderheadersalesreasonRow, merge: (NewRow, SalesorderheadersalesreasonRow) => NewRow): SalesorderheadersalesreasonStructure[NewRow] = - new SalesorderheadersalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala index 8d4bf9c6e2..1152a2fa27 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalespersonFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -26,5 +28,31 @@ trait SalespersonFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonFields extends SalespersonStructure[SalespersonRow](None, identity, (_, x) => x) +object SalespersonFields { + val structure: Relation[SalespersonFields, SalespersonRow, SalespersonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) + extends Relation[SalespersonFields, SalespersonRow, Row] { + + override val fields: SalespersonFields[Row] = new SalespersonFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) + override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.salesquota, fields.bonus, fields.commissionpct, fields.salesytd, fields.saleslastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala index 31f9a98943..053041c453 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoImpl.scala @@ -31,7 +31,7 @@ class SalespersonRepoImpl extends SalespersonRepo { sql"""delete from sales.salesperson where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilder("sales.salesperson", SalespersonFields) + DeleteBuilder("sales.salesperson", SalespersonFields.structure) } override def insert(unsaved: SalespersonRow): ZIO[ZConnection, Throwable, SalespersonRow] = { sql"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") @@ -90,7 +90,7 @@ class SalespersonRepoImpl extends SalespersonRepo { streamingInsert(s"""COPY sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalespersonRowUnsaved.text) } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderSql("sales.salesperson", SalespersonFields, SalespersonRow.jdbcDecoder) + SelectBuilderSql("sales.salesperson", SalespersonFields.structure, SalespersonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalespersonRow] = { sql"""select "businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate"::text from sales.salesperson""".query(SalespersonRow.jdbcDecoder).selectStream @@ -115,7 +115,7 @@ class SalespersonRepoImpl extends SalespersonRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilder("sales.salesperson", SalespersonFields, SalespersonRow.jdbcDecoder) + UpdateBuilder("sales.salesperson", SalespersonFields.structure, SalespersonRow.jdbcDecoder) } override def upsert(unsaved: SalespersonRow): ZIO[ZConnection, Throwable, UpdateResult[SalespersonRow]] = { sql"""insert into sales.salesperson("businessentityid", "territoryid", "salesquota", "bonus", "commissionpct", "salesytd", "saleslastyear", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala index 255b58598f..43e8bad3c7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonRepoMock.scala @@ -30,7 +30,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[SalespersonFields, SalespersonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonFields.structure.fields, map) } override def insert(unsaved: SalespersonRow): ZIO[ZConnection, Throwable, SalespersonRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalespersonFields, SalespersonRow] = { - SelectBuilderMock(SalespersonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalespersonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalespersonRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class SalespersonRepoMock(toRow: Function1[SalespersonRowUnsaved, SalespersonRow } } override def update: UpdateBuilder[SalespersonFields, SalespersonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonFields.structure.fields, map) } override def upsert(unsaved: SalespersonRow): ZIO[ZConnection, Throwable, UpdateResult[SalespersonRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala deleted file mode 100644 index 91c6def14d..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesperson/SalespersonStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesperson - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalespersonStructure[Row](val prefix: Option[String], val extract: Row => SalespersonRow, val merge: (Row, SalespersonRow) => Row) - extends Relation[SalespersonFields, SalespersonRow, Row] - with SalespersonFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new OptField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val bonus = new Field[BigDecimal, Row](prefix, "bonus", None, Some("numeric"))(x => extract(x).bonus, (row, value) => merge(row, extract(row).copy(bonus = value))) - override val commissionpct = new Field[BigDecimal, Row](prefix, "commissionpct", None, Some("numeric"))(x => extract(x).commissionpct, (row, value) => merge(row, extract(row).copy(commissionpct = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, salesquota, bonus, commissionpct, salesytd, saleslastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonRow, merge: (NewRow, SalespersonRow) => NewRow): SalespersonStructure[NewRow] = - new SalespersonStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala index 176e9e51e8..6a058db635 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalespersonquotahistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -20,5 +22,27 @@ trait SalespersonquotahistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalespersonquotahistoryFields extends SalespersonquotahistoryStructure[SalespersonquotahistoryRow](None, identity, (_, x) => x) +object SalespersonquotahistoryFields { + val structure: Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, SalespersonquotahistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) + extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] { + + override val fields: SalespersonquotahistoryFields[Row] = new SalespersonquotahistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) + override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.quotadate, fields.salesquota, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala index 3e43510880..cef821d265 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoImpl.scala @@ -30,7 +30,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { sql"""delete from sales.salespersonquotahistory where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "quotadate" = ${Segment.paramSegment(compositeId.quotadate)(TypoLocalDateTime.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields) + DeleteBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure) } override def insert(unsaved: SalespersonquotahistoryRow): ZIO[ZConnection, Throwable, SalespersonquotahistoryRow] = { sql"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") @@ -73,7 +73,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { streamingInsert(s"""COPY sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalespersonquotahistoryRowUnsaved.text) } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.jdbcDecoder) + SelectBuilderSql("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalespersonquotahistoryRow] = { sql"""select "businessentityid", "quotadate"::text, "salesquota", "rowguid", "modifieddate"::text from sales.salespersonquotahistory""".query(SalespersonquotahistoryRow.jdbcDecoder).selectStream @@ -90,7 +90,7 @@ class SalespersonquotahistoryRepoImpl extends SalespersonquotahistoryRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "quotadate" = ${Segment.paramSegment(compositeId.quotadate)(TypoLocalDateTime.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields, SalespersonquotahistoryRow.jdbcDecoder) + UpdateBuilder("sales.salespersonquotahistory", SalespersonquotahistoryFields.structure, SalespersonquotahistoryRow.jdbcDecoder) } override def upsert(unsaved: SalespersonquotahistoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalespersonquotahistoryRow]] = { sql"""insert into sales.salespersonquotahistory("businessentityid", "quotadate", "salesquota", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala index 3e84334619..080da4e6a7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryRepoMock.scala @@ -29,7 +29,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def insert(unsaved: SalespersonquotahistoryRow): ZIO[ZConnection, Throwable, SalespersonquotahistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - SelectBuilderMock(SalespersonquotahistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalespersonquotahistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalespersonquotahistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class SalespersonquotahistoryRepoMock(toRow: Function1[SalespersonquotahistoryRo } } override def update: UpdateBuilder[SalespersonquotahistoryFields, SalespersonquotahistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalespersonquotahistoryFields.structure.fields, map) } override def upsert(unsaved: SalespersonquotahistoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalespersonquotahistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala deleted file mode 100644 index 9a540fa924..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salespersonquotahistory/SalespersonquotahistoryStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salespersonquotahistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalespersonquotahistoryStructure[Row](val prefix: Option[String], val extract: Row => SalespersonquotahistoryRow, val merge: (Row, SalespersonquotahistoryRow) => Row) - extends Relation[SalespersonquotahistoryFields, SalespersonquotahistoryRow, Row] - with SalespersonquotahistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val quotadate = new IdField[TypoLocalDateTime, Row](prefix, "quotadate", Some("text"), Some("timestamp"))(x => extract(x).quotadate, (row, value) => merge(row, extract(row).copy(quotadate = value))) - override val salesquota = new Field[BigDecimal, Row](prefix, "salesquota", None, Some("numeric"))(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, quotadate, salesquota, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalespersonquotahistoryRow, merge: (NewRow, SalespersonquotahistoryRow) => NewRow): SalespersonquotahistoryStructure[NewRow] = - new SalespersonquotahistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala index daf8632644..f40de30e1f 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonFields.scala @@ -10,7 +10,9 @@ package salesreason import adventureworks.customtypes.TypoLocalDateTime import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesreasonFields[Row] { val salesreasonid: IdField[SalesreasonId, Row] @@ -18,5 +20,26 @@ trait SalesreasonFields[Row] { val reasontype: Field[Name, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesreasonFields extends SalesreasonStructure[SalesreasonRow](None, identity, (_, x) => x) +object SalesreasonFields { + val structure: Relation[SalesreasonFields, SalesreasonRow, SalesreasonRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) + extends Relation[SalesreasonFields, SalesreasonRow, Row] { + + override val fields: SalesreasonFields[Row] = new SalesreasonFields[Row] { + override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salesreasonid, fields.name, fields.reasontype, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala index 46990603d9..bad9e90788 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoImpl.scala @@ -28,7 +28,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { sql"""delete from sales.salesreason where "salesreasonid" = ${Segment.paramSegment(salesreasonid)(SalesreasonId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilder("sales.salesreason", SalesreasonFields) + DeleteBuilder("sales.salesreason", SalesreasonFields.structure) } override def insert(unsaved: SalesreasonRow): ZIO[ZConnection, Throwable, SalesreasonRow] = { sql"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") @@ -70,7 +70,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { streamingInsert(s"""COPY sales.salesreason("name", "reasontype", "salesreasonid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesreasonRowUnsaved.text) } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderSql("sales.salesreason", SalesreasonFields, SalesreasonRow.jdbcDecoder) + SelectBuilderSql("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesreasonRow] = { sql"""select "salesreasonid", "name", "reasontype", "modifieddate"::text from sales.salesreason""".query(SalesreasonRow.jdbcDecoder).selectStream @@ -90,7 +90,7 @@ class SalesreasonRepoImpl extends SalesreasonRepo { where "salesreasonid" = ${Segment.paramSegment(salesreasonid)(SalesreasonId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilder("sales.salesreason", SalesreasonFields, SalesreasonRow.jdbcDecoder) + UpdateBuilder("sales.salesreason", SalesreasonFields.structure, SalesreasonRow.jdbcDecoder) } override def upsert(unsaved: SalesreasonRow): ZIO[ZConnection, Throwable, UpdateResult[SalesreasonRow]] = { sql"""insert into sales.salesreason("salesreasonid", "name", "reasontype", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala index 4601dd68f4..635c61992b 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonRepoMock.scala @@ -29,7 +29,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow ZIO.succeed(map.remove(salesreasonid).isDefined) } override def delete: DeleteBuilder[SalesreasonFields, SalesreasonRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesreasonFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesreasonFields.structure.fields, map) } override def insert(unsaved: SalesreasonRow): ZIO[ZConnection, Throwable, SalesreasonRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesreasonFields, SalesreasonRow] = { - SelectBuilderMock(SalesreasonFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesreasonFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesreasonRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class SalesreasonRepoMock(toRow: Function1[SalesreasonRowUnsaved, SalesreasonRow } } override def update: UpdateBuilder[SalesreasonFields, SalesreasonRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesreasonFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesreasonFields.structure.fields, map) } override def upsert(unsaved: SalesreasonRow): ZIO[ZConnection, Throwable, UpdateResult[SalesreasonRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala deleted file mode 100644 index 53f0e42c64..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesreason/SalesreasonStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesreason - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesreasonStructure[Row](val prefix: Option[String], val extract: Row => SalesreasonRow, val merge: (Row, SalesreasonRow) => Row) - extends Relation[SalesreasonFields, SalesreasonRow, Row] - with SalesreasonFields[Row] { outer => - - override val salesreasonid = new IdField[SalesreasonId, Row](prefix, "salesreasonid", None, Some("int4"))(x => extract(x).salesreasonid, (row, value) => merge(row, extract(row).copy(salesreasonid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val reasontype = new Field[Name, Row](prefix, "reasontype", None, Some("varchar"))(x => extract(x).reasontype, (row, value) => merge(row, extract(row).copy(reasontype = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salesreasonid, name, reasontype, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesreasonRow, merge: (NewRow, SalesreasonRow) => NewRow): SalesreasonStructure[NewRow] = - new SalesreasonStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala index 197f428841..faf31d3876 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateFields.scala @@ -13,7 +13,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.stateprovince.StateprovinceId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalestaxrateFields[Row] { val salestaxrateid: IdField[SalestaxrateId, Row] @@ -24,5 +26,29 @@ trait SalestaxrateFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalestaxrateFields extends SalestaxrateStructure[SalestaxrateRow](None, identity, (_, x) => x) +object SalestaxrateFields { + val structure: Relation[SalestaxrateFields, SalestaxrateRow, SalestaxrateRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) + extends Relation[SalestaxrateFields, SalestaxrateRow, Row] { + + override val fields: SalestaxrateFields[Row] = new SalestaxrateFields[Row] { + override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) + override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) + override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) + override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salestaxrateid, fields.stateprovinceid, fields.taxtype, fields.taxrate, fields.name, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala index cef28ebb4f..8a26a3a8be 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoImpl.scala @@ -32,7 +32,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { sql"""delete from sales.salestaxrate where "salestaxrateid" = ${Segment.paramSegment(salestaxrateid)(SalestaxrateId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilder("sales.salestaxrate", SalestaxrateFields) + DeleteBuilder("sales.salestaxrate", SalestaxrateFields.structure) } override def insert(unsaved: SalestaxrateRow): ZIO[ZConnection, Throwable, SalestaxrateRow] = { sql"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") @@ -83,7 +83,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { streamingInsert(s"""COPY sales.salestaxrate("stateprovinceid", "taxtype", "name", "salestaxrateid", "taxrate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalestaxrateRowUnsaved.text) } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderSql("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.jdbcDecoder) + SelectBuilderSql("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalestaxrateRow] = { sql"""select "salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate"::text from sales.salestaxrate""".query(SalestaxrateRow.jdbcDecoder).selectStream @@ -106,7 +106,7 @@ class SalestaxrateRepoImpl extends SalestaxrateRepo { where "salestaxrateid" = ${Segment.paramSegment(salestaxrateid)(SalestaxrateId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilder("sales.salestaxrate", SalestaxrateFields, SalestaxrateRow.jdbcDecoder) + UpdateBuilder("sales.salestaxrate", SalestaxrateFields.structure, SalestaxrateRow.jdbcDecoder) } override def upsert(unsaved: SalestaxrateRow): ZIO[ZConnection, Throwable, UpdateResult[SalestaxrateRow]] = { sql"""insert into sales.salestaxrate("salestaxrateid", "stateprovinceid", "taxtype", "taxrate", "name", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala index bb1711dcee..bb372da0ab 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateRepoMock.scala @@ -29,7 +29,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate ZIO.succeed(map.remove(salestaxrateid).isDefined) } override def delete: DeleteBuilder[SalestaxrateFields, SalestaxrateRow] = { - DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields, map) + DeleteBuilderMock(DeleteParams.empty, SalestaxrateFields.structure.fields, map) } override def insert(unsaved: SalestaxrateRow): ZIO[ZConnection, Throwable, SalestaxrateRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalestaxrateFields, SalestaxrateRow] = { - SelectBuilderMock(SalestaxrateFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalestaxrateFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalestaxrateRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class SalestaxrateRepoMock(toRow: Function1[SalestaxrateRowUnsaved, Salestaxrate } } override def update: UpdateBuilder[SalestaxrateFields, SalestaxrateRow] = { - UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields, map) + UpdateBuilderMock(UpdateParams.empty, SalestaxrateFields.structure.fields, map) } override def upsert(unsaved: SalestaxrateRow): ZIO[ZConnection, Throwable, UpdateResult[SalestaxrateRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala deleted file mode 100644 index 116ca9b8e3..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salestaxrate/SalestaxrateStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salestaxrate - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoShort -import adventureworks.customtypes.TypoUUID -import adventureworks.person.stateprovince.StateprovinceId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalestaxrateStructure[Row](val prefix: Option[String], val extract: Row => SalestaxrateRow, val merge: (Row, SalestaxrateRow) => Row) - extends Relation[SalestaxrateFields, SalestaxrateRow, Row] - with SalestaxrateFields[Row] { outer => - - override val salestaxrateid = new IdField[SalestaxrateId, Row](prefix, "salestaxrateid", None, Some("int4"))(x => extract(x).salestaxrateid, (row, value) => merge(row, extract(row).copy(salestaxrateid = value))) - override val stateprovinceid = new Field[StateprovinceId, Row](prefix, "stateprovinceid", None, Some("int4"))(x => extract(x).stateprovinceid, (row, value) => merge(row, extract(row).copy(stateprovinceid = value))) - override val taxtype = new Field[TypoShort, Row](prefix, "taxtype", None, Some("int2"))(x => extract(x).taxtype, (row, value) => merge(row, extract(row).copy(taxtype = value))) - override val taxrate = new Field[BigDecimal, Row](prefix, "taxrate", None, Some("numeric"))(x => extract(x).taxrate, (row, value) => merge(row, extract(row).copy(taxrate = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salestaxrateid, stateprovinceid, taxtype, taxrate, name, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalestaxrateRow, merge: (NewRow, SalestaxrateRow) => NewRow): SalestaxrateStructure[NewRow] = - new SalestaxrateStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala index 79912180ae..7262098e8c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.countryregion.CountryregionId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SalesterritoryFields[Row] { val territoryid: IdField[SalesterritoryId, Row] @@ -26,5 +28,32 @@ trait SalesterritoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryFields extends SalesterritoryStructure[SalesterritoryRow](None, identity, (_, x) => x) +object SalesterritoryFields { + val structure: Relation[SalesterritoryFields, SalesterritoryRow, SalesterritoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) + extends Relation[SalesterritoryFields, SalesterritoryRow, Row] { + + override val fields: SalesterritoryFields[Row] = new SalesterritoryFields[Row] { + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) + override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) + override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.territoryid, fields.name, fields.countryregioncode, fields.group, fields.salesytd, fields.saleslastyear, fields.costytd, fields.costlastyear, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala index 1fa0e787a1..c5d965b272 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoImpl.scala @@ -31,7 +31,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { sql"""delete from sales.salesterritory where "territoryid" = ${Segment.paramSegment(territoryid)(SalesterritoryId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilder("sales.salesterritory", SalesterritoryFields) + DeleteBuilder("sales.salesterritory", SalesterritoryFields.structure) } override def insert(unsaved: SalesterritoryRow): ZIO[ZConnection, Throwable, SalesterritoryRow] = { sql"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") @@ -94,7 +94,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { streamingInsert(s"""COPY sales.salesterritory("name", "countryregioncode", "group", "territoryid", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesterritoryRowUnsaved.text) } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderSql("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.jdbcDecoder) + SelectBuilderSql("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesterritoryRow] = { sql"""select "territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate"::text from sales.salesterritory""".query(SalesterritoryRow.jdbcDecoder).selectStream @@ -120,7 +120,7 @@ class SalesterritoryRepoImpl extends SalesterritoryRepo { where "territoryid" = ${Segment.paramSegment(territoryid)(SalesterritoryId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilder("sales.salesterritory", SalesterritoryFields, SalesterritoryRow.jdbcDecoder) + UpdateBuilder("sales.salesterritory", SalesterritoryFields.structure, SalesterritoryRow.jdbcDecoder) } override def upsert(unsaved: SalesterritoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalesterritoryRow]] = { sql"""insert into sales.salesterritory("territoryid", "name", "countryregioncode", "group", "salesytd", "saleslastyear", "costytd", "costlastyear", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala index 3dc31a4509..ef0de6d6e6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryRepoMock.scala @@ -29,7 +29,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester ZIO.succeed(map.remove(territoryid).isDefined) } override def delete: DeleteBuilder[SalesterritoryFields, SalesterritoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryRow): ZIO[ZConnection, Throwable, SalesterritoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesterritoryFields, SalesterritoryRow] = { - SelectBuilderMock(SalesterritoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesterritoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesterritoryRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class SalesterritoryRepoMock(toRow: Function1[SalesterritoryRowUnsaved, Salester } } override def update: UpdateBuilder[SalesterritoryFields, SalesterritoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalesterritoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala deleted file mode 100644 index 9b43b2d769..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritory/SalesterritoryStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.countryregion.CountryregionId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SalesterritoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryRow, val merge: (Row, SalesterritoryRow) => Row) - extends Relation[SalesterritoryFields, SalesterritoryRow, Row] - with SalesterritoryFields[Row] { outer => - - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val countryregioncode = new Field[CountryregionId, Row](prefix, "countryregioncode", None, None)(x => extract(x).countryregioncode, (row, value) => merge(row, extract(row).copy(countryregioncode = value))) - override val group = new Field[/* max 50 chars */ String, Row](prefix, "group", None, None)(x => extract(x).group, (row, value) => merge(row, extract(row).copy(group = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, Some("numeric"))(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, Some("numeric"))(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - override val costytd = new Field[BigDecimal, Row](prefix, "costytd", None, Some("numeric"))(x => extract(x).costytd, (row, value) => merge(row, extract(row).copy(costytd = value))) - override val costlastyear = new Field[BigDecimal, Row](prefix, "costlastyear", None, Some("numeric"))(x => extract(x).costlastyear, (row, value) => merge(row, extract(row).copy(costlastyear = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](territoryid, name, countryregioncode, group, salesytd, saleslastyear, costytd, costlastyear, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryRow, merge: (NewRow, SalesterritoryRow) => NewRow): SalesterritoryStructure[NewRow] = - new SalesterritoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala index 20865db45f..5e9711c5fb 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryFields.scala @@ -12,8 +12,10 @@ import adventureworks.customtypes.TypoUUID import adventureworks.person.businessentity.BusinessentityId import adventureworks.sales.salesterritory.SalesterritoryId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SalesterritoryhistoryFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -23,5 +25,28 @@ trait SalesterritoryhistoryFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SalesterritoryhistoryFields extends SalesterritoryhistoryStructure[SalesterritoryhistoryRow](None, identity, (_, x) => x) +object SalesterritoryhistoryFields { + val structure: Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, SalesterritoryhistoryRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) + extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] { + + override val fields: SalesterritoryhistoryFields[Row] = new SalesterritoryhistoryFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) + override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.territoryid, fields.startdate, fields.enddate, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala index 890668e76c..f5ba881d13 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoImpl.scala @@ -31,7 +31,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { sql"""delete from sales.salesterritoryhistory where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)} AND "territoryid" = ${Segment.paramSegment(compositeId.territoryid)(SalesterritoryId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields) + DeleteBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure) } override def insert(unsaved: SalesterritoryhistoryRow): ZIO[ZConnection, Throwable, SalesterritoryhistoryRow] = { sql"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") @@ -75,7 +75,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { streamingInsert(s"""COPY sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SalesterritoryhistoryRowUnsaved.text) } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.jdbcDecoder) + SelectBuilderSql("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SalesterritoryhistoryRow] = { sql"""select "businessentityid", "territoryid", "startdate"::text, "enddate"::text, "rowguid", "modifieddate"::text from sales.salesterritoryhistory""".query(SalesterritoryhistoryRow.jdbcDecoder).selectStream @@ -92,7 +92,7 @@ class SalesterritoryhistoryRepoImpl extends SalesterritoryhistoryRepo { where "businessentityid" = ${Segment.paramSegment(compositeId.businessentityid)(BusinessentityId.setter)} AND "startdate" = ${Segment.paramSegment(compositeId.startdate)(TypoLocalDateTime.setter)} AND "territoryid" = ${Segment.paramSegment(compositeId.territoryid)(SalesterritoryId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields, SalesterritoryhistoryRow.jdbcDecoder) + UpdateBuilder("sales.salesterritoryhistory", SalesterritoryhistoryFields.structure, SalesterritoryhistoryRow.jdbcDecoder) } override def upsert(unsaved: SalesterritoryhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalesterritoryhistoryRow]] = { sql"""insert into sales.salesterritoryhistory("businessentityid", "territoryid", "startdate", "enddate", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala index 2de601c766..dd2beab8dd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryRepoMock.scala @@ -29,7 +29,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields, map) + DeleteBuilderMock(DeleteParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def insert(unsaved: SalesterritoryhistoryRow): ZIO[ZConnection, Throwable, SalesterritoryhistoryRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - SelectBuilderMock(SalesterritoryhistoryFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SalesterritoryhistoryFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SalesterritoryhistoryRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class SalesterritoryhistoryRepoMock(toRow: Function1[SalesterritoryhistoryRowUns } } override def update: UpdateBuilder[SalesterritoryhistoryFields, SalesterritoryhistoryRow] = { - UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields, map) + UpdateBuilderMock(UpdateParams.empty, SalesterritoryhistoryFields.structure.fields, map) } override def upsert(unsaved: SalesterritoryhistoryRow): ZIO[ZConnection, Throwable, UpdateResult[SalesterritoryhistoryRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala deleted file mode 100644 index a8d599c781..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/salesterritoryhistory/SalesterritoryhistoryStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package salesterritoryhistory - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.sales.salesterritory.SalesterritoryId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SalesterritoryhistoryStructure[Row](val prefix: Option[String], val extract: Row => SalesterritoryhistoryRow, val merge: (Row, SalesterritoryhistoryRow) => Row) - extends Relation[SalesterritoryhistoryFields, SalesterritoryhistoryRow, Row] - with SalesterritoryhistoryFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val territoryid = new IdField[SalesterritoryId, Row](prefix, "territoryid", None, Some("int4"))(x => extract(x).territoryid, (row, value) => merge(row, extract(row).copy(territoryid = value))) - override val startdate = new IdField[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new OptField[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, territoryid, startdate, enddate, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SalesterritoryhistoryRow, merge: (NewRow, SalesterritoryhistoryRow) => NewRow): SalesterritoryhistoryStructure[NewRow] = - new SalesterritoryhistoryStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala index 74332491f5..af2007ec4a 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemFields.scala @@ -10,7 +10,9 @@ package shoppingcartitem import adventureworks.customtypes.TypoLocalDateTime import adventureworks.production.product.ProductId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait ShoppingcartitemFields[Row] { val shoppingcartitemid: IdField[ShoppingcartitemId, Row] @@ -20,5 +22,28 @@ trait ShoppingcartitemFields[Row] { val datecreated: Field[TypoLocalDateTime, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object ShoppingcartitemFields extends ShoppingcartitemStructure[ShoppingcartitemRow](None, identity, (_, x) => x) +object ShoppingcartitemFields { + val structure: Relation[ShoppingcartitemFields, ShoppingcartitemRow, ShoppingcartitemRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) + extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] { + + override val fields: ShoppingcartitemFields[Row] = new ShoppingcartitemFields[Row] { + override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) + override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) + override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) + override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.shoppingcartitemid, fields.shoppingcartid, fields.quantity, fields.productid, fields.datecreated, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala index 1eed36a749..f0f260526c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoImpl.scala @@ -29,7 +29,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { sql"""delete from sales.shoppingcartitem where "shoppingcartitemid" = ${Segment.paramSegment(shoppingcartitemid)(ShoppingcartitemId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields) + DeleteBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure) } override def insert(unsaved: ShoppingcartitemRow): ZIO[ZConnection, Throwable, ShoppingcartitemRow] = { sql"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") @@ -79,7 +79,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { streamingInsert(s"""COPY sales.shoppingcartitem("shoppingcartid", "productid", "shoppingcartitemid", "quantity", "datecreated", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(ShoppingcartitemRowUnsaved.text) } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.jdbcDecoder) + SelectBuilderSql("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, ShoppingcartitemRow] = { sql"""select "shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated"::text, "modifieddate"::text from sales.shoppingcartitem""".query(ShoppingcartitemRow.jdbcDecoder).selectStream @@ -101,7 +101,7 @@ class ShoppingcartitemRepoImpl extends ShoppingcartitemRepo { where "shoppingcartitemid" = ${Segment.paramSegment(shoppingcartitemid)(ShoppingcartitemId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields, ShoppingcartitemRow.jdbcDecoder) + UpdateBuilder("sales.shoppingcartitem", ShoppingcartitemFields.structure, ShoppingcartitemRow.jdbcDecoder) } override def upsert(unsaved: ShoppingcartitemRow): ZIO[ZConnection, Throwable, UpdateResult[ShoppingcartitemRow]] = { sql"""insert into sales.shoppingcartitem("shoppingcartitemid", "shoppingcartid", "quantity", "productid", "datecreated", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala index f17aeb7c3d..2d07aaef80 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemRepoMock.scala @@ -29,7 +29,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop ZIO.succeed(map.remove(shoppingcartitemid).isDefined) } override def delete: DeleteBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields, map) + DeleteBuilderMock(DeleteParams.empty, ShoppingcartitemFields.structure.fields, map) } override def insert(unsaved: ShoppingcartitemRow): ZIO[ZConnection, Throwable, ShoppingcartitemRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - SelectBuilderMock(ShoppingcartitemFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(ShoppingcartitemFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, ShoppingcartitemRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class ShoppingcartitemRepoMock(toRow: Function1[ShoppingcartitemRowUnsaved, Shop } } override def update: UpdateBuilder[ShoppingcartitemFields, ShoppingcartitemRow] = { - UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields, map) + UpdateBuilderMock(UpdateParams.empty, ShoppingcartitemFields.structure.fields, map) } override def upsert(unsaved: ShoppingcartitemRow): ZIO[ZConnection, Throwable, UpdateResult[ShoppingcartitemRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala deleted file mode 100644 index d6abe08ac0..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/shoppingcartitem/ShoppingcartitemStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package shoppingcartitem - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.production.product.ProductId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class ShoppingcartitemStructure[Row](val prefix: Option[String], val extract: Row => ShoppingcartitemRow, val merge: (Row, ShoppingcartitemRow) => Row) - extends Relation[ShoppingcartitemFields, ShoppingcartitemRow, Row] - with ShoppingcartitemFields[Row] { outer => - - override val shoppingcartitemid = new IdField[ShoppingcartitemId, Row](prefix, "shoppingcartitemid", None, Some("int4"))(x => extract(x).shoppingcartitemid, (row, value) => merge(row, extract(row).copy(shoppingcartitemid = value))) - override val shoppingcartid = new Field[/* max 50 chars */ String, Row](prefix, "shoppingcartid", None, None)(x => extract(x).shoppingcartid, (row, value) => merge(row, extract(row).copy(shoppingcartid = value))) - override val quantity = new Field[Int, Row](prefix, "quantity", None, Some("int4"))(x => extract(x).quantity, (row, value) => merge(row, extract(row).copy(quantity = value))) - override val productid = new Field[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val datecreated = new Field[TypoLocalDateTime, Row](prefix, "datecreated", Some("text"), Some("timestamp"))(x => extract(x).datecreated, (row, value) => merge(row, extract(row).copy(datecreated = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](shoppingcartitemid, shoppingcartid, quantity, productid, datecreated, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => ShoppingcartitemRow, merge: (NewRow, ShoppingcartitemRow) => NewRow): ShoppingcartitemStructure[NewRow] = - new ShoppingcartitemStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala index 4df6434691..6eb482dbc6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferFields.scala @@ -10,8 +10,10 @@ package specialoffer import adventureworks.customtypes.TypoLocalDateTime import adventureworks.customtypes.TypoUUID import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait SpecialofferFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -26,5 +28,33 @@ trait SpecialofferFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferFields extends SpecialofferStructure[SpecialofferRow](None, identity, (_, x) => x) +object SpecialofferFields { + val structure: Relation[SpecialofferFields, SpecialofferRow, SpecialofferRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) + extends Relation[SpecialofferFields, SpecialofferRow, Row] { + + override val fields: SpecialofferFields[Row] = new SpecialofferFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) + override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) + override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) + override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) + override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) + override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) + override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) + override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.description, fields.discountpct, fields.`type`, fields.category, fields.startdate, fields.enddate, fields.minqty, fields.maxqty, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala index 8acf5bec17..9c8cc5e7af 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoImpl.scala @@ -29,7 +29,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { sql"""delete from sales.specialoffer where "specialofferid" = ${Segment.paramSegment(specialofferid)(SpecialofferId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilder("sales.specialoffer", SpecialofferFields) + DeleteBuilder("sales.specialoffer", SpecialofferFields.structure) } override def insert(unsaved: SpecialofferRow): ZIO[ZConnection, Throwable, SpecialofferRow] = { sql"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") @@ -87,7 +87,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { streamingInsert(s"""COPY sales.specialoffer("description", "type", "category", "startdate", "enddate", "maxqty", "specialofferid", "discountpct", "minqty", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SpecialofferRowUnsaved.text) } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderSql("sales.specialoffer", SpecialofferFields, SpecialofferRow.jdbcDecoder) + SelectBuilderSql("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SpecialofferRow] = { sql"""select "specialofferid", "description", "discountpct", "type", "category", "startdate"::text, "enddate"::text, "minqty", "maxqty", "rowguid", "modifieddate"::text from sales.specialoffer""".query(SpecialofferRow.jdbcDecoder).selectStream @@ -114,7 +114,7 @@ class SpecialofferRepoImpl extends SpecialofferRepo { where "specialofferid" = ${Segment.paramSegment(specialofferid)(SpecialofferId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilder("sales.specialoffer", SpecialofferFields, SpecialofferRow.jdbcDecoder) + UpdateBuilder("sales.specialoffer", SpecialofferFields.structure, SpecialofferRow.jdbcDecoder) } override def upsert(unsaved: SpecialofferRow): ZIO[ZConnection, Throwable, UpdateResult[SpecialofferRow]] = { sql"""insert into sales.specialoffer("specialofferid", "description", "discountpct", "type", "category", "startdate", "enddate", "minqty", "maxqty", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala index c22de8fe04..47718b121c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferRepoMock.scala @@ -29,7 +29,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer ZIO.succeed(map.remove(specialofferid).isDefined) } override def delete: DeleteBuilder[SpecialofferFields, SpecialofferRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferFields.structure.fields, map) } override def insert(unsaved: SpecialofferRow): ZIO[ZConnection, Throwable, SpecialofferRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SpecialofferFields, SpecialofferRow] = { - SelectBuilderMock(SpecialofferFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SpecialofferFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SpecialofferRow] = { ZStream.fromIterable(map.values) @@ -87,7 +87,7 @@ class SpecialofferRepoMock(toRow: Function1[SpecialofferRowUnsaved, Specialoffer } } override def update: UpdateBuilder[SpecialofferFields, SpecialofferRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferFields.structure.fields, map) } override def upsert(unsaved: SpecialofferRow): ZIO[ZConnection, Throwable, UpdateResult[SpecialofferRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala deleted file mode 100644 index d642590d55..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialoffer/SpecialofferStructure.scala +++ /dev/null @@ -1,39 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialoffer - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class SpecialofferStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferRow, val merge: (Row, SpecialofferRow) => Row) - extends Relation[SpecialofferFields, SpecialofferRow, Row] - with SpecialofferFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val description = new Field[/* max 255 chars */ String, Row](prefix, "description", None, None)(x => extract(x).description, (row, value) => merge(row, extract(row).copy(description = value))) - override val discountpct = new Field[BigDecimal, Row](prefix, "discountpct", None, Some("numeric"))(x => extract(x).discountpct, (row, value) => merge(row, extract(row).copy(discountpct = value))) - override val `type` = new Field[/* max 50 chars */ String, Row](prefix, "type", None, None)(x => extract(x).`type`, (row, value) => merge(row, extract(row).copy(`type` = value))) - override val category = new Field[/* max 50 chars */ String, Row](prefix, "category", None, None)(x => extract(x).category, (row, value) => merge(row, extract(row).copy(category = value))) - override val startdate = new Field[TypoLocalDateTime, Row](prefix, "startdate", Some("text"), Some("timestamp"))(x => extract(x).startdate, (row, value) => merge(row, extract(row).copy(startdate = value))) - override val enddate = new Field[TypoLocalDateTime, Row](prefix, "enddate", Some("text"), Some("timestamp"))(x => extract(x).enddate, (row, value) => merge(row, extract(row).copy(enddate = value))) - override val minqty = new Field[Int, Row](prefix, "minqty", None, Some("int4"))(x => extract(x).minqty, (row, value) => merge(row, extract(row).copy(minqty = value))) - override val maxqty = new OptField[Int, Row](prefix, "maxqty", None, Some("int4"))(x => extract(x).maxqty, (row, value) => merge(row, extract(row).copy(maxqty = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, description, discountpct, `type`, category, startdate, enddate, minqty, maxqty, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferRow, merge: (NewRow, SpecialofferRow) => NewRow): SpecialofferStructure[NewRow] = - new SpecialofferStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala index 76e69fd6ee..c6c2055c28 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductFields.scala @@ -12,7 +12,9 @@ import adventureworks.customtypes.TypoUUID import adventureworks.production.product.ProductId import adventureworks.sales.specialoffer.SpecialofferId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField +import typo.dsl.Structure.Relation trait SpecialofferproductFields[Row] { val specialofferid: IdField[SpecialofferId, Row] @@ -20,5 +22,26 @@ trait SpecialofferproductFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object SpecialofferproductFields extends SpecialofferproductStructure[SpecialofferproductRow](None, identity, (_, x) => x) +object SpecialofferproductFields { + val structure: Relation[SpecialofferproductFields, SpecialofferproductRow, SpecialofferproductRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) + extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] { + + override val fields: SpecialofferproductFields[Row] = new SpecialofferproductFields[Row] { + override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) + override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.specialofferid, fields.productid, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala index 1fe9ec5290..2b80b36e0d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoImpl.scala @@ -30,7 +30,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { sql"""delete from sales.specialofferproduct where "specialofferid" = ${Segment.paramSegment(compositeId.specialofferid)(SpecialofferId.setter)} AND "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields) + DeleteBuilder("sales.specialofferproduct", SpecialofferproductFields.structure) } override def insert(unsaved: SpecialofferproductRow): ZIO[ZConnection, Throwable, SpecialofferproductRow] = { sql"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") @@ -72,7 +72,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { streamingInsert(s"""COPY sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(SpecialofferproductRowUnsaved.text) } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.jdbcDecoder) + SelectBuilderSql("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, SpecialofferproductRow] = { sql"""select "specialofferid", "productid", "rowguid", "modifieddate"::text from sales.specialofferproduct""".query(SpecialofferproductRow.jdbcDecoder).selectStream @@ -88,7 +88,7 @@ class SpecialofferproductRepoImpl extends SpecialofferproductRepo { where "specialofferid" = ${Segment.paramSegment(compositeId.specialofferid)(SpecialofferId.setter)} AND "productid" = ${Segment.paramSegment(compositeId.productid)(ProductId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields, SpecialofferproductRow.jdbcDecoder) + UpdateBuilder("sales.specialofferproduct", SpecialofferproductFields.structure, SpecialofferproductRow.jdbcDecoder) } override def upsert(unsaved: SpecialofferproductRow): ZIO[ZConnection, Throwable, UpdateResult[SpecialofferproductRow]] = { sql"""insert into sales.specialofferproduct("specialofferid", "productid", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala index 10c53570ae..bd9b36725d 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductRepoMock.scala @@ -29,7 +29,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved ZIO.succeed(map.remove(compositeId).isDefined) } override def delete: DeleteBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields, map) + DeleteBuilderMock(DeleteParams.empty, SpecialofferproductFields.structure.fields, map) } override def insert(unsaved: SpecialofferproductRow): ZIO[ZConnection, Throwable, SpecialofferproductRow] = { ZIO.succeed { @@ -64,7 +64,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - SelectBuilderMock(SpecialofferproductFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(SpecialofferproductFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, SpecialofferproductRow] = { ZStream.fromIterable(map.values) @@ -84,7 +84,7 @@ class SpecialofferproductRepoMock(toRow: Function1[SpecialofferproductRowUnsaved } } override def update: UpdateBuilder[SpecialofferproductFields, SpecialofferproductRow] = { - UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields, map) + UpdateBuilderMock(UpdateParams.empty, SpecialofferproductFields.structure.fields, map) } override def upsert(unsaved: SpecialofferproductRow): ZIO[ZConnection, Throwable, UpdateResult[SpecialofferproductRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala deleted file mode 100644 index 4acd01c6bb..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/specialofferproduct/SpecialofferproductStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package specialofferproduct - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.production.product.ProductId -import adventureworks.sales.specialoffer.SpecialofferId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.Structure.Relation - -class SpecialofferproductStructure[Row](val prefix: Option[String], val extract: Row => SpecialofferproductRow, val merge: (Row, SpecialofferproductRow) => Row) - extends Relation[SpecialofferproductFields, SpecialofferproductRow, Row] - with SpecialofferproductFields[Row] { outer => - - override val specialofferid = new IdField[SpecialofferId, Row](prefix, "specialofferid", None, Some("int4"))(x => extract(x).specialofferid, (row, value) => merge(row, extract(row).copy(specialofferid = value))) - override val productid = new IdField[ProductId, Row](prefix, "productid", None, Some("int4"))(x => extract(x).productid, (row, value) => merge(row, extract(row).copy(productid = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](specialofferid, productid, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => SpecialofferproductRow, merge: (NewRow, SpecialofferproductRow) => NewRow): SpecialofferproductStructure[NewRow] = - new SpecialofferproductStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala index f5e0398065..2164840a07 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreFields.scala @@ -13,8 +13,10 @@ import adventureworks.customtypes.TypoXml import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.IdField import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait StoreFields[Row] { val businessentityid: IdField[BusinessentityId, Row] @@ -24,5 +26,28 @@ trait StoreFields[Row] { val rowguid: Field[TypoUUID, Row] val modifieddate: Field[TypoLocalDateTime, Row] } -object StoreFields extends StoreStructure[StoreRow](None, identity, (_, x) => x) +object StoreFields { + val structure: Relation[StoreFields, StoreRow, StoreRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) + extends Relation[StoreFields, StoreRow, Row] { + + override val fields: StoreFields[Row] = new StoreFields[Row] { + override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) + override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.salespersonid, fields.demographics, fields.rowguid, fields.modifieddate) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala index d191d233cc..9326c09ad1 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoImpl.scala @@ -32,7 +32,7 @@ class StoreRepoImpl extends StoreRepo { sql"""delete from sales.store where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".delete.map(_ > 0) } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilder("sales.store", StoreFields) + DeleteBuilder("sales.store", StoreFields.structure) } override def insert(unsaved: StoreRow): ZIO[ZConnection, Throwable, StoreRow] = { sql"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") @@ -76,7 +76,7 @@ class StoreRepoImpl extends StoreRepo { streamingInsert(s"""COPY sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") FROM STDIN (DEFAULT '__DEFAULT_VALUE__')""", batchSize, unsaved)(StoreRowUnsaved.text) } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderSql("sales.store", StoreFields, StoreRow.jdbcDecoder) + SelectBuilderSql("sales.store", StoreFields.structure, StoreRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, StoreRow] = { sql"""select "businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate"::text from sales.store""".query(StoreRow.jdbcDecoder).selectStream @@ -98,7 +98,7 @@ class StoreRepoImpl extends StoreRepo { where "businessentityid" = ${Segment.paramSegment(businessentityid)(BusinessentityId.setter)}""".update.map(_ > 0) } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilder("sales.store", StoreFields, StoreRow.jdbcDecoder) + UpdateBuilder("sales.store", StoreFields.structure, StoreRow.jdbcDecoder) } override def upsert(unsaved: StoreRow): ZIO[ZConnection, Throwable, UpdateResult[StoreRow]] = { sql"""insert into sales.store("businessentityid", "name", "salespersonid", "demographics", "rowguid", "modifieddate") diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala index 25a0e044ab..751f6914a9 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreRepoMock.scala @@ -30,7 +30,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], ZIO.succeed(map.remove(businessentityid).isDefined) } override def delete: DeleteBuilder[StoreFields, StoreRow] = { - DeleteBuilderMock(DeleteParams.empty, StoreFields, map) + DeleteBuilderMock(DeleteParams.empty, StoreFields.structure.fields, map) } override def insert(unsaved: StoreRow): ZIO[ZConnection, Throwable, StoreRow] = { ZIO.succeed { @@ -65,7 +65,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], }.runLast.map(_.getOrElse(0L)) } override def select: SelectBuilder[StoreFields, StoreRow] = { - SelectBuilderMock(StoreFields, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) + SelectBuilderMock(StoreFields.structure, ZIO.succeed(Chunk.fromIterable(map.values)), SelectParams.empty) } override def selectAll: ZStream[ZConnection, Throwable, StoreRow] = { ZStream.fromIterable(map.values) @@ -88,7 +88,7 @@ class StoreRepoMock(toRow: Function1[StoreRowUnsaved, StoreRow], } } override def update: UpdateBuilder[StoreFields, StoreRow] = { - UpdateBuilderMock(UpdateParams.empty, StoreFields, map) + UpdateBuilderMock(UpdateParams.empty, StoreFields.structure.fields, map) } override def upsert(unsaved: StoreRow): ZIO[ZConnection, Throwable, UpdateResult[StoreRow]] = { ZIO.succeed { diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala deleted file mode 100644 index 45fddb7785..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/store/StoreStructure.scala +++ /dev/null @@ -1,37 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package store - -import adventureworks.customtypes.TypoLocalDateTime -import adventureworks.customtypes.TypoUUID -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.IdField -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class StoreStructure[Row](val prefix: Option[String], val extract: Row => StoreRow, val merge: (Row, StoreRow) => Row) - extends Relation[StoreFields, StoreRow, Row] - with StoreFields[Row] { outer => - - override val businessentityid = new IdField[BusinessentityId, Row](prefix, "businessentityid", None, Some("int4"))(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, Some("varchar"))(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, Some("int4"))(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, Some("xml"))(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - override val rowguid = new Field[TypoUUID, Row](prefix, "rowguid", None, Some("uuid"))(x => extract(x).rowguid, (row, value) => merge(row, extract(row).copy(rowguid = value))) - override val modifieddate = new Field[TypoLocalDateTime, Row](prefix, "modifieddate", Some("text"), Some("timestamp"))(x => extract(x).modifieddate, (row, value) => merge(row, extract(row).copy(modifieddate = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, salespersonid, demographics, rowguid, modifieddate) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => StoreRow, merge: (NewRow, StoreRow) => NewRow): StoreStructure[NewRow] = - new StoreStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala index 6476a979fa..8217897f26 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewFields.scala @@ -13,7 +13,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VindividualcustomerViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -35,5 +37,40 @@ trait VindividualcustomerViewFields[Row] { val countryregionname: Field[Name, Row] val demographics: OptField[TypoXml, Row] } -object VindividualcustomerViewFields extends VindividualcustomerViewStructure[VindividualcustomerViewRow](None, identity, (_, x) => x) +object VindividualcustomerViewFields { + val structure: Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, VindividualcustomerViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) + extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] { + + override val fields: VindividualcustomerViewFields[Row] = new VindividualcustomerViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.demographics) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala index c33a4e6834..1627a6b50c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VindividualcustomerViewRepoImpl extends VindividualcustomerViewRepo { override def select: SelectBuilder[VindividualcustomerViewFields, VindividualcustomerViewRow] = { - SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields, VindividualcustomerViewRow.jdbcDecoder) + SelectBuilderSql("sales.vindividualcustomer", VindividualcustomerViewFields.structure, VindividualcustomerViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VindividualcustomerViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "demographics" from sales.vindividualcustomer""".query(VindividualcustomerViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala deleted file mode 100644 index 66a9abfd80..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vindividualcustomer/VindividualcustomerViewStructure.scala +++ /dev/null @@ -1,48 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vindividualcustomer - -import adventureworks.customtypes.TypoXml -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VindividualcustomerViewStructure[Row](val prefix: Option[String], val extract: Row => VindividualcustomerViewRow, val merge: (Row, VindividualcustomerViewRow) => Row) - extends Relation[VindividualcustomerViewFields, VindividualcustomerViewRow, Row] - with VindividualcustomerViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val demographics = new OptField[TypoXml, Row](prefix, "demographics", None, None)(x => extract(x).demographics, (row, value) => merge(row, extract(row).copy(demographics = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, demographics) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VindividualcustomerViewRow, merge: (NewRow, VindividualcustomerViewRow) => NewRow): VindividualcustomerViewStructure[NewRow] = - new VindividualcustomerViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala index 65ad2184a6..b13a6ac7a8 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoLocalDate import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VpersondemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,35 @@ trait VpersondemographicsViewFields[Row] { val homeownerflag: OptField[Boolean, Row] val numbercarsowned: OptField[Int, Row] } -object VpersondemographicsViewFields extends VpersondemographicsViewStructure[VpersondemographicsViewRow](None, identity, (_, x) => x) +object VpersondemographicsViewFields { + val structure: Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, VpersondemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) + extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] { + + override val fields: VpersondemographicsViewFields[Row] = new VpersondemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) + override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) + override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) + override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) + override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) + override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) + override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) + override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) + override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) + override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) + override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) + override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.totalpurchaseytd, fields.datefirstpurchase, fields.birthdate, fields.maritalstatus, fields.yearlyincome, fields.gender, fields.totalchildren, fields.numberchildrenathome, fields.education, fields.occupation, fields.homeownerflag, fields.numbercarsowned) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala index 60a480069e..7e0ae93e5c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VpersondemographicsViewRepoImpl extends VpersondemographicsViewRepo { override def select: SelectBuilder[VpersondemographicsViewFields, VpersondemographicsViewRow] = { - SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields, VpersondemographicsViewRow.jdbcDecoder) + SelectBuilderSql("sales.vpersondemographics", VpersondemographicsViewFields.structure, VpersondemographicsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VpersondemographicsViewRow] = { sql"""select "businessentityid", "totalpurchaseytd"::numeric, "datefirstpurchase"::text, "birthdate"::text, "maritalstatus", "yearlyincome", "gender", "totalchildren", "numberchildrenathome", "education", "occupation", "homeownerflag", "numbercarsowned" from sales.vpersondemographics""".query(VpersondemographicsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala deleted file mode 100644 index 738b9fdca2..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vpersondemographics/VpersondemographicsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vpersondemographics - -import adventureworks.customtypes.TypoLocalDate -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VpersondemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VpersondemographicsViewRow, val merge: (Row, VpersondemographicsViewRow) => Row) - extends Relation[VpersondemographicsViewFields, VpersondemographicsViewRow, Row] - with VpersondemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val totalpurchaseytd = new OptField[TypoMoney, Row](prefix, "totalpurchaseytd", Some("numeric"), None)(x => extract(x).totalpurchaseytd, (row, value) => merge(row, extract(row).copy(totalpurchaseytd = value))) - override val datefirstpurchase = new OptField[TypoLocalDate, Row](prefix, "datefirstpurchase", Some("text"), None)(x => extract(x).datefirstpurchase, (row, value) => merge(row, extract(row).copy(datefirstpurchase = value))) - override val birthdate = new OptField[TypoLocalDate, Row](prefix, "birthdate", Some("text"), None)(x => extract(x).birthdate, (row, value) => merge(row, extract(row).copy(birthdate = value))) - override val maritalstatus = new OptField[/* max 1 chars */ String, Row](prefix, "maritalstatus", None, None)(x => extract(x).maritalstatus, (row, value) => merge(row, extract(row).copy(maritalstatus = value))) - override val yearlyincome = new OptField[/* max 30 chars */ String, Row](prefix, "yearlyincome", None, None)(x => extract(x).yearlyincome, (row, value) => merge(row, extract(row).copy(yearlyincome = value))) - override val gender = new OptField[/* max 1 chars */ String, Row](prefix, "gender", None, None)(x => extract(x).gender, (row, value) => merge(row, extract(row).copy(gender = value))) - override val totalchildren = new OptField[Int, Row](prefix, "totalchildren", None, None)(x => extract(x).totalchildren, (row, value) => merge(row, extract(row).copy(totalchildren = value))) - override val numberchildrenathome = new OptField[Int, Row](prefix, "numberchildrenathome", None, None)(x => extract(x).numberchildrenathome, (row, value) => merge(row, extract(row).copy(numberchildrenathome = value))) - override val education = new OptField[/* max 30 chars */ String, Row](prefix, "education", None, None)(x => extract(x).education, (row, value) => merge(row, extract(row).copy(education = value))) - override val occupation = new OptField[/* max 30 chars */ String, Row](prefix, "occupation", None, None)(x => extract(x).occupation, (row, value) => merge(row, extract(row).copy(occupation = value))) - override val homeownerflag = new OptField[Boolean, Row](prefix, "homeownerflag", None, None)(x => extract(x).homeownerflag, (row, value) => merge(row, extract(row).copy(homeownerflag = value))) - override val numbercarsowned = new OptField[Int, Row](prefix, "numbercarsowned", None, None)(x => extract(x).numbercarsowned, (row, value) => merge(row, extract(row).copy(numbercarsowned = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, totalpurchaseytd, datefirstpurchase, birthdate, maritalstatus, yearlyincome, gender, totalchildren, numberchildrenathome, education, occupation, homeownerflag, numbercarsowned) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VpersondemographicsViewRow, merge: (NewRow, VpersondemographicsViewRow) => NewRow): VpersondemographicsViewStructure[NewRow] = - new VpersondemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala index 4d1274938b..11e54139fd 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -38,5 +40,44 @@ trait VsalespersonViewFields[Row] { val salesytd: Field[BigDecimal, Row] val saleslastyear: Field[BigDecimal, Row] } -object VsalespersonViewFields extends VsalespersonViewStructure[VsalespersonViewRow](None, identity, (_, x) => x) +object VsalespersonViewFields { + val structure: Relation[VsalespersonViewFields, VsalespersonViewRow, VsalespersonViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) + extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] { + + override val fields: VsalespersonViewFields[Row] = new VsalespersonViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) + override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) + override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) + override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) + override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.jobtitle, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname, fields.territoryname, fields.territorygroup, fields.salesquota, fields.salesytd, fields.saleslastyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala index 4df5bfe1aa..39e2e01c8c 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VsalespersonViewRepoImpl extends VsalespersonViewRepo { override def select: SelectBuilder[VsalespersonViewFields, VsalespersonViewRow] = { - SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields, VsalespersonViewRow.jdbcDecoder) + SelectBuilderSql("sales.vsalesperson", VsalespersonViewFields.structure, VsalespersonViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VsalespersonViewRow] = { sql"""select "businessentityid", "title", "firstname", "middlename", "lastname", "suffix", "jobtitle", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname", "territoryname", "territorygroup", "salesquota", "salesytd", "saleslastyear" from sales.vsalesperson""".query(VsalespersonViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala deleted file mode 100644 index 7af84b60ed..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalesperson/VsalespersonViewStructure.scala +++ /dev/null @@ -1,51 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalesperson - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonViewRow, val merge: (Row, VsalespersonViewRow) => Row) - extends Relation[VsalespersonViewFields, VsalespersonViewRow, Row] - with VsalespersonViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - override val territoryname = new OptField[Name, Row](prefix, "territoryname", None, None)(x => extract(x).territoryname, (row, value) => merge(row, extract(row).copy(territoryname = value))) - override val territorygroup = new OptField[/* max 50 chars */ String, Row](prefix, "territorygroup", None, None)(x => extract(x).territorygroup, (row, value) => merge(row, extract(row).copy(territorygroup = value))) - override val salesquota = new OptField[BigDecimal, Row](prefix, "salesquota", None, None)(x => extract(x).salesquota, (row, value) => merge(row, extract(row).copy(salesquota = value))) - override val salesytd = new Field[BigDecimal, Row](prefix, "salesytd", None, None)(x => extract(x).salesytd, (row, value) => merge(row, extract(row).copy(salesytd = value))) - override val saleslastyear = new Field[BigDecimal, Row](prefix, "saleslastyear", None, None)(x => extract(x).saleslastyear, (row, value) => merge(row, extract(row).copy(saleslastyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, title, firstname, middlename, lastname, suffix, jobtitle, phonenumber, phonenumbertype, emailaddress, emailpromotion, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname, territoryname, territorygroup, salesquota, salesytd, saleslastyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonViewRow, merge: (NewRow, VsalespersonViewRow) => NewRow): VsalespersonViewStructure[NewRow] = - new VsalespersonViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala index 2eb635438a..f636046ef3 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewFields.scala @@ -7,7 +7,9 @@ package adventureworks package sales package vsalespersonsalesbyfiscalyears +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val SalesPersonID: OptField[Int, Row] @@ -18,5 +20,29 @@ trait VsalespersonsalesbyfiscalyearsViewFields[Row] { val `2013`: OptField[BigDecimal, Row] val `2014`: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsViewFields extends VsalespersonsalesbyfiscalyearsViewStructure[VsalespersonsalesbyfiscalyearsViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, VsalespersonsalesbyfiscalyearsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsViewFields[Row] = new VsalespersonsalesbyfiscalyearsViewFields[Row] { + override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) + override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) + override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) + override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) + override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) + override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) + override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.SalesPersonID, fields.FullName, fields.JobTitle, fields.SalesTerritory, fields.`2012`, fields.`2013`, fields.`2014`) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala index b76fc8acc3..5257aa3edc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VsalespersonsalesbyfiscalyearsViewRepoImpl extends VsalespersonsalesbyfiscalyearsViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow.jdbcDecoder) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyears", VsalespersonsalesbyfiscalyearsViewFields.structure, VsalespersonsalesbyfiscalyearsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VsalespersonsalesbyfiscalyearsViewRow] = { sql"""select "SalesPersonID", "FullName", "JobTitle", "SalesTerritory", "2012", "2013", "2014" from sales.vsalespersonsalesbyfiscalyears""".query(VsalespersonsalesbyfiscalyearsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala deleted file mode 100644 index 3485f8108f..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyears/VsalespersonsalesbyfiscalyearsViewStructure.scala +++ /dev/null @@ -1,31 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyears - -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsViewFields, VsalespersonsalesbyfiscalyearsViewRow, Row] - with VsalespersonsalesbyfiscalyearsViewFields[Row] { outer => - - override val SalesPersonID = new OptField[Int, Row](prefix, "SalesPersonID", None, None)(x => extract(x).SalesPersonID, (row, value) => merge(row, extract(row).copy(SalesPersonID = value))) - override val FullName = new OptField[String, Row](prefix, "FullName", None, None)(x => extract(x).FullName, (row, value) => merge(row, extract(row).copy(FullName = value))) - override val JobTitle = new OptField[String, Row](prefix, "JobTitle", None, None)(x => extract(x).JobTitle, (row, value) => merge(row, extract(row).copy(JobTitle = value))) - override val SalesTerritory = new OptField[String, Row](prefix, "SalesTerritory", None, None)(x => extract(x).SalesTerritory, (row, value) => merge(row, extract(row).copy(SalesTerritory = value))) - override val `2012` = new OptField[BigDecimal, Row](prefix, "2012", None, None)(x => extract(x).`2012`, (row, value) => merge(row, extract(row).copy(`2012` = value))) - override val `2013` = new OptField[BigDecimal, Row](prefix, "2013", None, None)(x => extract(x).`2013`, (row, value) => merge(row, extract(row).copy(`2013` = value))) - override val `2014` = new OptField[BigDecimal, Row](prefix, "2014", None, None)(x => extract(x).`2014`, (row, value) => merge(row, extract(row).copy(`2014` = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](SalesPersonID, FullName, JobTitle, SalesTerritory, `2012`, `2013`, `2014`) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsViewRow) => NewRow): VsalespersonsalesbyfiscalyearsViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala index c871064e8e..491bd9b9f7 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewFields.scala @@ -10,7 +10,9 @@ package vsalespersonsalesbyfiscalyearsdata import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salespersonid: OptField[BusinessentityId, Row] @@ -20,5 +22,28 @@ trait VsalespersonsalesbyfiscalyearsdataViewFields[Row] { val salestotal: OptField[BigDecimal, Row] val fiscalyear: OptField[BigDecimal, Row] } -object VsalespersonsalesbyfiscalyearsdataViewFields extends VsalespersonsalesbyfiscalyearsdataViewStructure[VsalespersonsalesbyfiscalyearsdataViewRow](None, identity, (_, x) => x) +object VsalespersonsalesbyfiscalyearsdataViewFields { + val structure: Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, VsalespersonsalesbyfiscalyearsdataViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) + extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] { + + override val fields: VsalespersonsalesbyfiscalyearsdataViewFields[Row] = new VsalespersonsalesbyfiscalyearsdataViewFields[Row] { + override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) + override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) + override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) + override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) + override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) + override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.salespersonid, fields.fullname, fields.jobtitle, fields.salesterritory, fields.salestotal, fields.fiscalyear) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala index 7d8beccade..1c145fa597 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VsalespersonsalesbyfiscalyearsdataViewRepoImpl extends VsalespersonsalesbyfiscalyearsdataViewRepo { override def select: SelectBuilder[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow] = { - SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow.jdbcDecoder) + SelectBuilderSql("sales.vsalespersonsalesbyfiscalyearsdata", VsalespersonsalesbyfiscalyearsdataViewFields.structure, VsalespersonsalesbyfiscalyearsdataViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VsalespersonsalesbyfiscalyearsdataViewRow] = { sql"""select "salespersonid", "fullname", "jobtitle", "salesterritory", "salestotal", "fiscalyear" from sales.vsalespersonsalesbyfiscalyearsdata""".query(VsalespersonsalesbyfiscalyearsdataViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala deleted file mode 100644 index 98db3bcd8b..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vsalespersonsalesbyfiscalyearsdata/VsalespersonsalesbyfiscalyearsdataViewStructure.scala +++ /dev/null @@ -1,33 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vsalespersonsalesbyfiscalyearsdata - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VsalespersonsalesbyfiscalyearsdataViewStructure[Row](val prefix: Option[String], val extract: Row => VsalespersonsalesbyfiscalyearsdataViewRow, val merge: (Row, VsalespersonsalesbyfiscalyearsdataViewRow) => Row) - extends Relation[VsalespersonsalesbyfiscalyearsdataViewFields, VsalespersonsalesbyfiscalyearsdataViewRow, Row] - with VsalespersonsalesbyfiscalyearsdataViewFields[Row] { outer => - - override val salespersonid = new OptField[BusinessentityId, Row](prefix, "salespersonid", None, None)(x => extract(x).salespersonid, (row, value) => merge(row, extract(row).copy(salespersonid = value))) - override val fullname = new OptField[String, Row](prefix, "fullname", None, None)(x => extract(x).fullname, (row, value) => merge(row, extract(row).copy(fullname = value))) - override val jobtitle = new Field[/* max 50 chars */ String, Row](prefix, "jobtitle", None, None)(x => extract(x).jobtitle, (row, value) => merge(row, extract(row).copy(jobtitle = value))) - override val salesterritory = new Field[Name, Row](prefix, "salesterritory", None, None)(x => extract(x).salesterritory, (row, value) => merge(row, extract(row).copy(salesterritory = value))) - override val salestotal = new OptField[BigDecimal, Row](prefix, "salestotal", None, None)(x => extract(x).salestotal, (row, value) => merge(row, extract(row).copy(salestotal = value))) - override val fiscalyear = new OptField[BigDecimal, Row](prefix, "fiscalyear", None, None)(x => extract(x).fiscalyear, (row, value) => merge(row, extract(row).copy(fiscalyear = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](salespersonid, fullname, jobtitle, salesterritory, salestotal, fiscalyear) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VsalespersonsalesbyfiscalyearsdataViewRow, merge: (NewRow, VsalespersonsalesbyfiscalyearsdataViewRow) => NewRow): VsalespersonsalesbyfiscalyearsdataViewStructure[NewRow] = - new VsalespersonsalesbyfiscalyearsdataViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala index 5b34fb540b..cf260014a4 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewFields.scala @@ -10,7 +10,9 @@ package vstorewithaddresses import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithaddressesViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -23,5 +25,31 @@ trait VstorewithaddressesViewFields[Row] { val postalcode: Field[/* max 15 chars */ String, Row] val countryregionname: Field[Name, Row] } -object VstorewithaddressesViewFields extends VstorewithaddressesViewStructure[VstorewithaddressesViewRow](None, identity, (_, x) => x) +object VstorewithaddressesViewFields { + val structure: Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, VstorewithaddressesViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) + extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] { + + override val fields: VstorewithaddressesViewFields[Row] = new VstorewithaddressesViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) + override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) + override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) + override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) + override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) + override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) + override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.addresstype, fields.addressline1, fields.addressline2, fields.city, fields.stateprovincename, fields.postalcode, fields.countryregionname) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala index 10e341b8c5..98dba9ff96 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VstorewithaddressesViewRepoImpl extends VstorewithaddressesViewRepo { override def select: SelectBuilder[VstorewithaddressesViewFields, VstorewithaddressesViewRow] = { - SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields, VstorewithaddressesViewRow.jdbcDecoder) + SelectBuilderSql("sales.vstorewithaddresses", VstorewithaddressesViewFields.structure, VstorewithaddressesViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VstorewithaddressesViewRow] = { sql"""select "businessentityid", "name", "addresstype", "addressline1", "addressline2", "city", "stateprovincename", "postalcode", "countryregionname" from sales.vstorewithaddresses""".query(VstorewithaddressesViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala deleted file mode 100644 index 54c832e3d4..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithaddresses/VstorewithaddressesViewStructure.scala +++ /dev/null @@ -1,36 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithaddresses - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithaddressesViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithaddressesViewRow, val merge: (Row, VstorewithaddressesViewRow) => Row) - extends Relation[VstorewithaddressesViewFields, VstorewithaddressesViewRow, Row] - with VstorewithaddressesViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val addresstype = new Field[Name, Row](prefix, "addresstype", None, None)(x => extract(x).addresstype, (row, value) => merge(row, extract(row).copy(addresstype = value))) - override val addressline1 = new Field[/* max 60 chars */ String, Row](prefix, "addressline1", None, None)(x => extract(x).addressline1, (row, value) => merge(row, extract(row).copy(addressline1 = value))) - override val addressline2 = new OptField[/* max 60 chars */ String, Row](prefix, "addressline2", None, None)(x => extract(x).addressline2, (row, value) => merge(row, extract(row).copy(addressline2 = value))) - override val city = new Field[/* max 30 chars */ String, Row](prefix, "city", None, None)(x => extract(x).city, (row, value) => merge(row, extract(row).copy(city = value))) - override val stateprovincename = new Field[Name, Row](prefix, "stateprovincename", None, None)(x => extract(x).stateprovincename, (row, value) => merge(row, extract(row).copy(stateprovincename = value))) - override val postalcode = new Field[/* max 15 chars */ String, Row](prefix, "postalcode", None, None)(x => extract(x).postalcode, (row, value) => merge(row, extract(row).copy(postalcode = value))) - override val countryregionname = new Field[Name, Row](prefix, "countryregionname", None, None)(x => extract(x).countryregionname, (row, value) => merge(row, extract(row).copy(countryregionname = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, addresstype, addressline1, addressline2, city, stateprovincename, postalcode, countryregionname) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithaddressesViewRow, merge: (NewRow, VstorewithaddressesViewRow) => NewRow): VstorewithaddressesViewStructure[NewRow] = - new VstorewithaddressesViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala index 39b7c010bf..9a27788ee6 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewFields.scala @@ -12,7 +12,9 @@ import adventureworks.public.Name import adventureworks.public.Phone import adventureworks.userdefined.FirstName import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithcontactsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -28,5 +30,34 @@ trait VstorewithcontactsViewFields[Row] { val emailaddress: OptField[/* max 50 chars */ String, Row] val emailpromotion: Field[Int, Row] } -object VstorewithcontactsViewFields extends VstorewithcontactsViewStructure[VstorewithcontactsViewRow](None, identity, (_, x) => x) +object VstorewithcontactsViewFields { + val structure: Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, VstorewithcontactsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) + extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] { + + override val fields: VstorewithcontactsViewFields[Row] = new VstorewithcontactsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) + override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) + override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) + override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) + override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) + override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) + override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) + override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) + override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) + override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.contacttype, fields.title, fields.firstname, fields.middlename, fields.lastname, fields.suffix, fields.phonenumber, fields.phonenumbertype, fields.emailaddress, fields.emailpromotion) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala index 65029051d4..60e5ee9ffc 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VstorewithcontactsViewRepoImpl extends VstorewithcontactsViewRepo { override def select: SelectBuilder[VstorewithcontactsViewFields, VstorewithcontactsViewRow] = { - SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields, VstorewithcontactsViewRow.jdbcDecoder) + SelectBuilderSql("sales.vstorewithcontacts", VstorewithcontactsViewFields.structure, VstorewithcontactsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VstorewithcontactsViewRow] = { sql"""select "businessentityid", "name", "contacttype", "title", "firstname", "middlename", "lastname", "suffix", "phonenumber", "phonenumbertype", "emailaddress", "emailpromotion" from sales.vstorewithcontacts""".query(VstorewithcontactsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala deleted file mode 100644 index 0e2624e4a4..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithcontacts/VstorewithcontactsViewStructure.scala +++ /dev/null @@ -1,41 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithcontacts - -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import adventureworks.public.Phone -import adventureworks.userdefined.FirstName -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithcontactsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithcontactsViewRow, val merge: (Row, VstorewithcontactsViewRow) => Row) - extends Relation[VstorewithcontactsViewFields, VstorewithcontactsViewRow, Row] - with VstorewithcontactsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val contacttype = new Field[Name, Row](prefix, "contacttype", None, None)(x => extract(x).contacttype, (row, value) => merge(row, extract(row).copy(contacttype = value))) - override val title = new OptField[/* max 8 chars */ String, Row](prefix, "title", None, None)(x => extract(x).title, (row, value) => merge(row, extract(row).copy(title = value))) - override val firstname = new Field[/* user-picked */ FirstName, Row](prefix, "firstname", None, None)(x => extract(x).firstname, (row, value) => merge(row, extract(row).copy(firstname = value))) - override val middlename = new OptField[Name, Row](prefix, "middlename", None, None)(x => extract(x).middlename, (row, value) => merge(row, extract(row).copy(middlename = value))) - override val lastname = new Field[Name, Row](prefix, "lastname", None, None)(x => extract(x).lastname, (row, value) => merge(row, extract(row).copy(lastname = value))) - override val suffix = new OptField[/* max 10 chars */ String, Row](prefix, "suffix", None, None)(x => extract(x).suffix, (row, value) => merge(row, extract(row).copy(suffix = value))) - override val phonenumber = new OptField[Phone, Row](prefix, "phonenumber", None, None)(x => extract(x).phonenumber, (row, value) => merge(row, extract(row).copy(phonenumber = value))) - override val phonenumbertype = new OptField[Name, Row](prefix, "phonenumbertype", None, None)(x => extract(x).phonenumbertype, (row, value) => merge(row, extract(row).copy(phonenumbertype = value))) - override val emailaddress = new OptField[/* max 50 chars */ String, Row](prefix, "emailaddress", None, None)(x => extract(x).emailaddress, (row, value) => merge(row, extract(row).copy(emailaddress = value))) - override val emailpromotion = new Field[Int, Row](prefix, "emailpromotion", None, None)(x => extract(x).emailpromotion, (row, value) => merge(row, extract(row).copy(emailpromotion = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, contacttype, title, firstname, middlename, lastname, suffix, phonenumber, phonenumbertype, emailaddress, emailpromotion) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithcontactsViewRow, merge: (NewRow, VstorewithcontactsViewRow) => NewRow): VstorewithcontactsViewStructure[NewRow] = - new VstorewithcontactsViewStructure(prefix, extract, merge) -} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala index c3d98a97b6..ca48f53127 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewFields.scala @@ -11,7 +11,9 @@ import adventureworks.customtypes.TypoMoney import adventureworks.person.businessentity.BusinessentityId import adventureworks.public.Name import typo.dsl.SqlExpr.Field +import typo.dsl.SqlExpr.FieldLikeNoHkt import typo.dsl.SqlExpr.OptField +import typo.dsl.Structure.Relation trait VstorewithdemographicsViewFields[Row] { val businessentityid: Field[BusinessentityId, Row] @@ -27,5 +29,34 @@ trait VstorewithdemographicsViewFields[Row] { val Internet: OptField[/* max 30 chars */ String, Row] val NumberEmployees: OptField[Int, Row] } -object VstorewithdemographicsViewFields extends VstorewithdemographicsViewStructure[VstorewithdemographicsViewRow](None, identity, (_, x) => x) +object VstorewithdemographicsViewFields { + val structure: Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, VstorewithdemographicsViewRow] = + new Impl(None, identity, (_, x) => x) + + private final class Impl[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) + extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] { + + override val fields: VstorewithdemographicsViewFields[Row] = new VstorewithdemographicsViewFields[Row] { + override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) + override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) + override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) + override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) + override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) + override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) + override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) + override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) + override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) + override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) + override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) + override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) + } + + override val columns: List[FieldLikeNoHkt[?, Row]] = + List[FieldLikeNoHkt[?, Row]](fields.businessentityid, fields.name, fields.AnnualSales, fields.AnnualRevenue, fields.BankName, fields.BusinessType, fields.YearOpened, fields.Specialty, fields.SquareFeet, fields.Brands, fields.Internet, fields.NumberEmployees) + + override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): Impl[NewRow] = + new Impl(prefix, extract, merge) + } + +} diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala index b7ba24f92a..8d596495e5 100644 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala +++ b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewRepoImpl.scala @@ -15,7 +15,7 @@ import zio.stream.ZStream class VstorewithdemographicsViewRepoImpl extends VstorewithdemographicsViewRepo { override def select: SelectBuilder[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow] = { - SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields, VstorewithdemographicsViewRow.jdbcDecoder) + SelectBuilderSql("sales.vstorewithdemographics", VstorewithdemographicsViewFields.structure, VstorewithdemographicsViewRow.jdbcDecoder) } override def selectAll: ZStream[ZConnection, Throwable, VstorewithdemographicsViewRow] = { sql"""select "businessentityid", "name", "AnnualSales"::numeric, "AnnualRevenue"::numeric, "BankName", "BusinessType", "YearOpened", "Specialty", "SquareFeet", "Brands", "Internet", "NumberEmployees" from sales.vstorewithdemographics""".query(VstorewithdemographicsViewRow.jdbcDecoder).selectStream diff --git a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala b/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala deleted file mode 100644 index e9b17f1121..0000000000 --- a/typo-tester-zio-jdbc/generated-and-checked-in/adventureworks/sales/vstorewithdemographics/VstorewithdemographicsViewStructure.scala +++ /dev/null @@ -1,40 +0,0 @@ -/** - * File has been automatically generated by `typo`. - * - * IF YOU CHANGE THIS FILE YOUR CHANGES WILL BE OVERWRITTEN. - */ -package adventureworks -package sales -package vstorewithdemographics - -import adventureworks.customtypes.TypoMoney -import adventureworks.person.businessentity.BusinessentityId -import adventureworks.public.Name -import typo.dsl.SqlExpr.Field -import typo.dsl.SqlExpr.FieldLikeNoHkt -import typo.dsl.SqlExpr.OptField -import typo.dsl.Structure.Relation - -class VstorewithdemographicsViewStructure[Row](val prefix: Option[String], val extract: Row => VstorewithdemographicsViewRow, val merge: (Row, VstorewithdemographicsViewRow) => Row) - extends Relation[VstorewithdemographicsViewFields, VstorewithdemographicsViewRow, Row] - with VstorewithdemographicsViewFields[Row] { outer => - - override val businessentityid = new Field[BusinessentityId, Row](prefix, "businessentityid", None, None)(x => extract(x).businessentityid, (row, value) => merge(row, extract(row).copy(businessentityid = value))) - override val name = new Field[Name, Row](prefix, "name", None, None)(x => extract(x).name, (row, value) => merge(row, extract(row).copy(name = value))) - override val AnnualSales = new OptField[TypoMoney, Row](prefix, "AnnualSales", Some("numeric"), None)(x => extract(x).AnnualSales, (row, value) => merge(row, extract(row).copy(AnnualSales = value))) - override val AnnualRevenue = new OptField[TypoMoney, Row](prefix, "AnnualRevenue", Some("numeric"), None)(x => extract(x).AnnualRevenue, (row, value) => merge(row, extract(row).copy(AnnualRevenue = value))) - override val BankName = new OptField[/* max 50 chars */ String, Row](prefix, "BankName", None, None)(x => extract(x).BankName, (row, value) => merge(row, extract(row).copy(BankName = value))) - override val BusinessType = new OptField[/* max 5 chars */ String, Row](prefix, "BusinessType", None, None)(x => extract(x).BusinessType, (row, value) => merge(row, extract(row).copy(BusinessType = value))) - override val YearOpened = new OptField[Int, Row](prefix, "YearOpened", None, None)(x => extract(x).YearOpened, (row, value) => merge(row, extract(row).copy(YearOpened = value))) - override val Specialty = new OptField[/* max 50 chars */ String, Row](prefix, "Specialty", None, None)(x => extract(x).Specialty, (row, value) => merge(row, extract(row).copy(Specialty = value))) - override val SquareFeet = new OptField[Int, Row](prefix, "SquareFeet", None, None)(x => extract(x).SquareFeet, (row, value) => merge(row, extract(row).copy(SquareFeet = value))) - override val Brands = new OptField[/* max 30 chars */ String, Row](prefix, "Brands", None, None)(x => extract(x).Brands, (row, value) => merge(row, extract(row).copy(Brands = value))) - override val Internet = new OptField[/* max 30 chars */ String, Row](prefix, "Internet", None, None)(x => extract(x).Internet, (row, value) => merge(row, extract(row).copy(Internet = value))) - override val NumberEmployees = new OptField[Int, Row](prefix, "NumberEmployees", None, None)(x => extract(x).NumberEmployees, (row, value) => merge(row, extract(row).copy(NumberEmployees = value))) - - override val columns: List[FieldLikeNoHkt[?, Row]] = - List[FieldLikeNoHkt[?, Row]](businessentityid, name, AnnualSales, AnnualRevenue, BankName, BusinessType, YearOpened, Specialty, SquareFeet, Brands, Internet, NumberEmployees) - - override def copy[NewRow](prefix: Option[String], extract: NewRow => VstorewithdemographicsViewRow, merge: (NewRow, VstorewithdemographicsViewRow) => NewRow): VstorewithdemographicsViewStructure[NewRow] = - new VstorewithdemographicsViewStructure(prefix, extract, merge) -} diff --git a/typo/src/scala/typo/Naming.scala b/typo/src/scala/typo/Naming.scala index 8181647bcd..52cc626f1c 100644 --- a/typo/src/scala/typo/Naming.scala +++ b/typo/src/scala/typo/Naming.scala @@ -41,7 +41,6 @@ class Naming(val pkg: sc.QIdent) { def repoMockName(source: Source): sc.QIdent = relation(source, "RepoMock") def rowName(source: Source): sc.QIdent = relation(source, "Row") def fieldsName(source: Source): sc.QIdent = relation(source, "Fields") - def structureName(source: Source): sc.QIdent = relation(source, "Structure") def fieldValueName(source: Source): sc.QIdent = relation(source, "FieldValue") def fieldOrIdValueName(source: Source): sc.QIdent = relation(source, "FieldOrIdValue") def rowUnsaved(source: Source): sc.QIdent = relation(source, "RowUnsaved") diff --git a/typo/src/scala/typo/internal/ComputedNames.scala b/typo/src/scala/typo/internal/ComputedNames.scala index 758ea5a4fb..5b5784b195 100644 --- a/typo/src/scala/typo/internal/ComputedNames.scala +++ b/typo/src/scala/typo/internal/ComputedNames.scala @@ -9,7 +9,6 @@ case class ComputedNames(naming: Naming, source: Source, maybeId: Option[IdCompu val FieldValueName: Option[sc.Type.Qualified] = if (enableFieldValue) Some(sc.Type.Qualified(naming.fieldValueName(source))) else None val FieldOrIdValueName: Option[sc.Type.Qualified] = if (enableFieldValue) Some(sc.Type.Qualified(naming.fieldOrIdValueName(source))) else None val FieldsName: Option[sc.Type.Qualified] = if (enableDsl) Some(sc.Type.Qualified(naming.fieldsName(source))) else None - val StructureName: Option[sc.Type.Qualified] = if (enableDsl) Some(sc.Type.Qualified(naming.structureName(source))) else None def isIdColumn(colName: db.ColName): Boolean = maybeId.exists(_.cols.exists(_.dbName == colName)) diff --git a/typo/src/scala/typo/internal/codegen/DbLibAnorm.scala b/typo/src/scala/typo/internal/codegen/DbLibAnorm.scala index fbc454cdab..87fe9dba31 100644 --- a/typo/src/scala/typo/internal/codegen/DbLibAnorm.scala +++ b/typo/src/scala/typo/internal/codegen/DbLibAnorm.scala @@ -208,7 +208,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa override def repoImpl(repoMethod: RepoMethod): sc.Code = repoMethod match { case RepoMethod.SelectBuilder(relName, fieldsType, rowType) => - code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType, $rowType.rowParser)""" + code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType.structure, $rowType.rowParser)""" case RepoMethod.SelectAll(relName, cols, rowType) => val sql = SQL { code"""|select ${dbNames(cols, isRead = true)} @@ -238,7 +238,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa |""".stripMargin case RepoMethod.UpdateBuilder(relName, fieldsType, rowType) => - code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType, $rowType.rowParser)" + code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure, $rowType.rowParser)" case RepoMethod.SelectByUnique(relName, keyColumns, allCols, rowType) => val sql = SQL { @@ -416,7 +416,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa code"${textSupport.get.streamingInsert}($sql, batchSize, unsaved)(${textSupport.get.lookupTextFor(unsaved.tpe)}, c)" case RepoMethod.DeleteBuilder(relName, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType)" + code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure)" case RepoMethod.Delete(relName, id) => val sql = SQL { code"""delete from $relName where ${matchId(id)}""" @@ -459,7 +459,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa override def mockRepoImpl(id: IdComputed, repoMethod: RepoMethod, maybeToRow: Option[sc.Param]): sc.Code = { repoMethod match { case RepoMethod.SelectBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.SelectBuilderMock}($fieldsType, () => map.values.toList, ${sc.Type.dsl.SelectParams}.empty)" + code"${sc.Type.dsl.SelectBuilderMock}($fieldsType.structure, () => map.values.toList, ${sc.Type.dsl.SelectParams}.empty)" case RepoMethod.SelectAll(_, _, _) => code"map.values.toList" case RepoMethod.SelectById(_, _, id, _) => @@ -495,7 +495,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa | case ${TypesScala.None} => false |}""".stripMargin case RepoMethod.UpdateBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.Update(_, _, _, param, _) => code"""map.get(${param.name}.${id.paramName}) match { | case ${TypesScala.Some}(`${param.name}`) => false @@ -528,7 +528,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa |} |unsaved.size.toLong""".stripMargin case RepoMethod.DeleteBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.Delete(_, id) => code"map.remove(${id.paramName}).isDefined" case RepoMethod.SqlFile(_) => diff --git a/typo/src/scala/typo/internal/codegen/DbLibDoobie.scala b/typo/src/scala/typo/internal/codegen/DbLibDoobie.scala index 199be00790..634c1115d9 100644 --- a/typo/src/scala/typo/internal/codegen/DbLibDoobie.scala +++ b/typo/src/scala/typo/internal/codegen/DbLibDoobie.scala @@ -116,7 +116,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef override def repoImpl(repoMethod: RepoMethod): sc.Code = repoMethod match { case RepoMethod.SelectBuilder(relName, fieldsType, rowType) => - code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType, $rowType.read)""" + code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType.structure, $rowType.read)""" case RepoMethod.SelectAll(relName, cols, rowType) => val joinedColNames = dbNames(cols, isRead = true) @@ -184,7 +184,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef |}""".stripMargin case RepoMethod.UpdateBuilder(relName, fieldsType, rowType) => - code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType, $rowType.read)" + code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure, $rowType.read)" case RepoMethod.Update(relName, _, id, param, colsNotId) => val sql = SQL( @@ -284,7 +284,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef code"${query(sql, rowType)}.unique" case RepoMethod.DeleteBuilder(relName, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType)" + code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure)" case RepoMethod.Delete(relName, id) => val sql = SQL(code"""delete from $relName where ${matchId(id)}""") code"$sql.update.run.map(_ > 0)" @@ -326,7 +326,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef override def mockRepoImpl(id: IdComputed, repoMethod: RepoMethod, maybeToRow: Option[sc.Param]): sc.Code = { repoMethod match { case RepoMethod.SelectBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.SelectBuilderMock}($fieldsType, $delayCIO(map.values.toList), ${sc.Type.dsl.SelectParams}.empty)" + code"${sc.Type.dsl.SelectBuilderMock}($fieldsType.structure, $delayCIO(map.values.toList), ${sc.Type.dsl.SelectParams}.empty)" case RepoMethod.SelectAll(_, _, _) => code"$fs2Stream.emits(map.values.toList)" case RepoMethod.SelectById(_, _, id, _) => @@ -346,7 +346,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef | }.toList |}""".stripMargin case RepoMethod.UpdateBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.UpdateFieldValues(_, id, varargs, fieldValue, cases0, _) => val cases = cases0.map { col => code"case (acc, $fieldValue.${col.name}(value)) => acc.copy(${col.name} = value)" @@ -414,7 +414,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef |}""".stripMargin case RepoMethod.DeleteBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.Delete(_, id) => code"$delayCIO(map.remove(${id.paramName}).isDefined)" case RepoMethod.SqlFile(_) => diff --git a/typo/src/scala/typo/internal/codegen/DbLibZioJdbc.scala b/typo/src/scala/typo/internal/codegen/DbLibZioJdbc.scala index cebe92ba8e..f09aefe7bb 100644 --- a/typo/src/scala/typo/internal/codegen/DbLibZioJdbc.scala +++ b/typo/src/scala/typo/internal/codegen/DbLibZioJdbc.scala @@ -235,7 +235,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean override def repoImpl(repoMethod: RepoMethod): sc.Code = repoMethod match { case RepoMethod.SelectBuilder(relName, fieldsType, rowType) => - code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType, ${lookupJdbcDecoder(rowType)})""" + code"""${sc.Type.dsl.SelectBuilderSql}(${sc.StrLit(relName.value)}, $fieldsType.structure, ${lookupJdbcDecoder(rowType)})""" case RepoMethod.SelectAll(relName, cols, rowType) => val joinedColNames = dbNames(cols, isRead = true) @@ -303,7 +303,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean |}""".stripMargin case RepoMethod.UpdateBuilder(relName, fieldsType, rowType) => - code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType, ${lookupJdbcDecoder(rowType)})" + code"${sc.Type.dsl.UpdateBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure, ${lookupJdbcDecoder(rowType)})" case RepoMethod.Update(relName, _, id, param, colsNotId) => val sql = SQL( @@ -402,7 +402,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean code"${textSupport.get.streamingInsert}($sql, batchSize, unsaved)(${textSupport.get.lookupTextFor(unsaved.tpe)})" case RepoMethod.DeleteBuilder(relName, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType)" + code"${sc.Type.dsl.DeleteBuilder}(${sc.StrLit(relName.value)}, $fieldsType.structure)" case RepoMethod.Delete(relName, id) => val sql = SQL(code"""delete from $relName where ${matchId(id)}""") code"$sql.delete.map(_ > 0)" @@ -443,7 +443,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean override def mockRepoImpl(id: IdComputed, repoMethod: RepoMethod, maybeToRow: Option[sc.Param]): sc.Code = repoMethod match { case RepoMethod.SelectBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.SelectBuilderMock}($fieldsType, $ZIO.succeed($Chunk.fromIterable(map.values)), ${sc.Type.dsl.SelectParams}.empty)" + code"${sc.Type.dsl.SelectBuilderMock}($fieldsType.structure, $ZIO.succeed($Chunk.fromIterable(map.values)), ${sc.Type.dsl.SelectParams}.empty)" case RepoMethod.SelectAll(_, _, _) => code"$ZStream.fromIterable(map.values)" case RepoMethod.SelectById(_, _, id, _) => @@ -463,7 +463,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean | } |}""".stripMargin case RepoMethod.UpdateBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.UpdateBuilderMock}(${sc.Type.dsl.UpdateParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.UpdateFieldValues(_, id, varargs, fieldValue, cases0, _) => val cases = cases0.map { col => code"case (acc, $fieldValue.${col.name}(value)) => acc.copy(${col.name} = value)" @@ -513,7 +513,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean code"insert(${maybeToRow.get.name}(${unsavedParam.name}))" case RepoMethod.DeleteBuilder(_, fieldsType, _) => - code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType, map)" + code"${sc.Type.dsl.DeleteBuilderMock}(${sc.Type.dsl.DeleteParams}.empty, $fieldsType.structure.fields, map)" case RepoMethod.Delete(_, id) => code"$ZIO.succeed(map.remove(${id.paramName}).isDefined)" case RepoMethod.InsertStreaming(_, _, _) => diff --git a/typo/src/scala/typo/internal/codegen/FilesRelation.scala b/typo/src/scala/typo/internal/codegen/FilesRelation.scala index a241349471..cacf503098 100644 --- a/typo/src/scala/typo/internal/codegen/FilesRelation.scala +++ b/typo/src/scala/typo/internal/codegen/FilesRelation.scala @@ -3,6 +3,7 @@ package internal package codegen import play.api.libs.json.Json +import typo.sc.Type case class FilesRelation(naming: Naming, names: ComputedNames, maybeCols: Option[NonEmptyList[ComputedColumn]], options: InternalOptions) { def RowFile(rowType: DbLib.RowType): Option[sc.File] = maybeCols.map { cols => @@ -78,11 +79,11 @@ case class FilesRelation(naming: Naming, names: ComputedNames, maybeCols: Option val FieldsFile: Option[sc.File] = for { - structureName <- names.StructureName fieldsName <- names.FieldsName cols <- maybeCols } yield { val Row = sc.Type.Abstract(sc.Ident("Row")) + val members = cols .map { col => @@ -97,69 +98,69 @@ case class FilesRelation(naming: Naming, names: ComputedNames, maybeCols: Option } .mkCode("\n") + val ImplName = sc.Ident("Impl") val str = code"""trait ${fieldsName.name}[$Row] { | $members |} - |object ${fieldsName.name} extends ${structureName.of(names.RowName)}(None, identity, (_, x) => x) | + |object ${fieldsName.name} { + | val structure: ${sc.Type.dsl.StructureRelation}[$fieldsName, ${names.RowName}, ${names.RowName}] = + | new $ImplName(None, identity, (_, x) => x) + | + | ${structureFile(ImplName, fieldsName, cols)} + |} |""".stripMargin sc.File(fieldsName, str, Nil) } - val StructureFile: Option[sc.File] = - for { - structureName <- names.StructureName - fieldsName <- names.FieldsName - cols <- maybeCols - } yield { - val Row = sc.Type.Abstract(sc.Ident("Row")) - val NewRow = sc.Type.Abstract(sc.Ident("NewRow")) - val members = - cols - .map { col => - val (cls, tpe) = - if (names.isIdColumn(col.dbName)) (sc.Type.dsl.IdField, col.tpe) - else - col.tpe match { - case TypesScala.Optional(underlying) => (sc.Type.dsl.OptField, underlying) - case _ => (sc.Type.dsl.Field, col.tpe) - } - - val readSqlCast = SqlCast.fromPg(col.dbCol) match { - case Some(sqlCast) => code"${TypesScala.Some}(${sc.StrLit(sqlCast.typeName)})" - case None => TypesScala.None.code - } - val writeSqlCast = SqlCast.toPg(col.dbCol) match { - case Some(sqlCast) => code"${TypesScala.Some}(${sc.StrLit(sqlCast.typeName)})" - case None => TypesScala.None.code - } - code"override val ${col.name} = new ${cls.of(tpe, Row)}(prefix, ${sc - .StrLit(col.dbName.value)}, $readSqlCast, $writeSqlCast)(x => extract(x).${col.name}, (row, value) => merge(row, extract(row).copy(${col.name} = value)))" + def structureFile(implName: sc.Ident, fieldsName: Type.Qualified, cols: NonEmptyList[ComputedColumn]) = { + val Row = sc.Type.Abstract(sc.Ident("Row")) + val NewRow = sc.Type.Abstract(sc.Ident("NewRow")) + + val members = + cols + .map { col => + val (cls, tpe) = + if (names.isIdColumn(col.dbName)) (sc.Type.dsl.IdField, col.tpe) + else + col.tpe match { + case TypesScala.Optional(underlying) => (sc.Type.dsl.OptField, underlying) + case _ => (sc.Type.dsl.Field, col.tpe) + } + + val readSqlCast = SqlCast.fromPg(col.dbCol) match { + case Some(sqlCast) => code"${TypesScala.Some}(${sc.StrLit(sqlCast.typeName)})" + case None => TypesScala.None.code } - .mkCode("\n") - - val optString = TypesScala.Option.of(TypesJava.String) - val generalizedColumn = sc.Type.dsl.FieldLikeNoHkt.of(sc.Type.Wildcard, Row) - val columnsList = TypesScala.List.of(generalizedColumn) - val str = - code"""class ${structureName.name}[$Row](val prefix: $optString, val extract: $Row => ${names.RowName}, val merge: ($Row, ${names.RowName}) => $Row) - | extends ${sc.Type.dsl.StructureRelation.of(fieldsName, names.RowName, Row)} - | with ${fieldsName.of(Row)} { outer => - | - | $members - | - | override val columns: $columnsList = - | $columnsList(${cols.map(x => x.name.code).mkCode(", ")}) - | - | override def copy[$NewRow](prefix: $optString, extract: $NewRow => ${names.RowName}, merge: ($NewRow, ${names.RowName}) => $NewRow): ${structureName.of(NewRow)} = - | new ${structureName.name}(prefix, extract, merge) - |} - |""".stripMargin - - sc.File(structureName, str, Nil) - } + val writeSqlCast = SqlCast.toPg(col.dbCol) match { + case Some(sqlCast) => code"${TypesScala.Some}(${sc.StrLit(sqlCast.typeName)})" + case None => TypesScala.None.code + } + code"override val ${col.name} = new ${cls.of(tpe, Row)}(prefix, ${sc + .StrLit(col.dbName.value)}, $readSqlCast, $writeSqlCast)(x => extract(x).${col.name}, (row, value) => merge(row, extract(row).copy(${col.name} = value)))" + } + .mkCode("\n") + + val optString = TypesScala.Option.of(TypesJava.String) + val generalizedColumn = sc.Type.dsl.FieldLikeNoHkt.of(sc.Type.Wildcard, Row) + val columnsList = TypesScala.List.of(generalizedColumn) + code"""private final class $implName[$Row](val prefix: $optString, val extract: $Row => ${names.RowName}, val merge: ($Row, ${names.RowName}) => $Row) + | extends ${sc.Type.dsl.StructureRelation.of(fieldsName, names.RowName, Row)} { + | + | override val fields: ${fieldsName.name}[$Row] = new ${fieldsName.name}[$Row] { + | $members + | } + | + | override val columns: $columnsList = + | $columnsList(${cols.map(x => code"fields.${x.name}").mkCode(", ")}) + | + | override def copy[$NewRow](prefix: $optString, extract: $NewRow => ${names.RowName}, merge: ($NewRow, ${names.RowName}) => $NewRow): $implName[$NewRow] = + | new $implName(prefix, extract, merge) + |} + |""".stripMargin + } def RepoTraitFile(dbLib: DbLib, repoMethods: NonEmptyList[RepoMethod]): sc.File = { val renderedMethods = repoMethods.map { repoMethod => diff --git a/typo/src/scala/typo/internal/codegen/FilesSqlFile.scala b/typo/src/scala/typo/internal/codegen/FilesSqlFile.scala index 8afdca2d49..7e84592eed 100644 --- a/typo/src/scala/typo/internal/codegen/FilesSqlFile.scala +++ b/typo/src/scala/typo/internal/codegen/FilesSqlFile.scala @@ -9,7 +9,6 @@ case class FilesSqlFile(script: ComputedSqlFile, naming: Naming, options: Intern val all: List[sc.File] = List( relation.RowFile(RowType.Readable), relation.FieldsFile, - relation.StructureFile, for { dbLib <- options.dbLib } yield relation.RepoTraitFile(dbLib, script.repoMethods), diff --git a/typo/src/scala/typo/internal/codegen/FilesTable.scala b/typo/src/scala/typo/internal/codegen/FilesTable.scala index 1a864aa111..8c49e5e966 100644 --- a/typo/src/scala/typo/internal/codegen/FilesTable.scala +++ b/typo/src/scala/typo/internal/codegen/FilesTable.scala @@ -165,7 +165,6 @@ case class FilesTable(table: ComputedTable, options: InternalOptions, genOrderin val all: List[sc.File] = List( RowFile, relation.FieldsFile, - relation.StructureFile, UnsavedRowFile, for { repoMethods <- table.repoMethods diff --git a/typo/src/scala/typo/internal/codegen/FilesView.scala b/typo/src/scala/typo/internal/codegen/FilesView.scala index 6fbf3b0b6b..431262eb27 100644 --- a/typo/src/scala/typo/internal/codegen/FilesView.scala +++ b/typo/src/scala/typo/internal/codegen/FilesView.scala @@ -9,7 +9,6 @@ case class FilesView(view: ComputedView, options: InternalOptions) { val all: List[sc.File] = List( relation.RowFile(RowType.Readable), relation.FieldsFile, - relation.StructureFile, for { dbLib <- options.dbLib } yield relation.RepoTraitFile(dbLib, view.repoMethods),